列表格式问题(列表列表?)
Problems with format of a list (list of lists?)
我是 python 的新手,我有一个列表,该列表由来自多个 xlsx 文件的某些数据组成。我想将所有数据放入另一个 xlsx 文件,但我无法使用列表中的数据,因为我不了解列表的格式。
当我打印列表(数字)时,它看起来像这样:
[['A B 10', 2, 'A B 10', 3, 1, AC], ['A B 104', 3, 'A B 104', 2, -1, 'AC']]
[['D B 126', 3, 'D B 126', 2, -1, 'EFG 1'], ['D B 15', 3, 'D B 15', 2, -1, 'EFG 1']]
[]
[]
[['D B 544', 2, 'D B 544', 1, -1, 'EFG 11'], ['D B 152', 3, 'D B 152', 2, -1, 'EFG 11'], ['D B 682', 3, 'D B 682', 2, -1, 'EFG 11']]
每当我尝试将列表放入 xlsx 文件时,只会添加第一个子列表,如下所示:
我希望这样添加:
我使用的代码是这样的:
import os
import glob
import pandas as pd
from openpyxl import load_workbook
os.chdir(r'C:\Myfolder')
files = glob.glob('*.xlsx') #Iterate through all xlsx files in desired folder
numbers = [] #Creating an open list
for file in files:
df = pd.read_excel(file) #Creating dataframe of xlsx files with pandas
m = (df.iloc[:, 4] - df.iloc[:, 1]) != 0 #Finding all of the rows where cell value number 4 - cell value number 1 is not equal to 0
pos = [0, 1, 3, 4, 6]
numbers = (df.loc[m, df.columns[pos]].values.tolist()) #Adding these rows to the list
print(numbers) #See numbers list written earlier
report = load_workbook(r"C:\Myworkbook.xlsx")
ws = report.create_sheet('Mysheet')
for _list in numbers:
for row_data in _list:
ws.append([row_data])
report.save(r"C:\Myworkbook.xlsx")
我的问题是:
1:我有什么样的清单? (数字列表)它不是列表的列表,因为列表会针对迭代的每个 xlsx 文件关闭。
2: 有谁知道如何将数据正确地放入我的 xlsx 文件中?
您没有得到列表的列表,因为您正在为循环中的每个传递覆盖 numbers
变量。
改变
numbers = (df.loc[m, df.columns[pos]].values.tolist())
至
numbers.append(df.loc[m, df.columns[pos]].values.tolist())
我是 python 的新手,我有一个列表,该列表由来自多个 xlsx 文件的某些数据组成。我想将所有数据放入另一个 xlsx 文件,但我无法使用列表中的数据,因为我不了解列表的格式。
当我打印列表(数字)时,它看起来像这样:
[['A B 10', 2, 'A B 10', 3, 1, AC], ['A B 104', 3, 'A B 104', 2, -1, 'AC']]
[['D B 126', 3, 'D B 126', 2, -1, 'EFG 1'], ['D B 15', 3, 'D B 15', 2, -1, 'EFG 1']]
[]
[]
[['D B 544', 2, 'D B 544', 1, -1, 'EFG 11'], ['D B 152', 3, 'D B 152', 2, -1, 'EFG 11'], ['D B 682', 3, 'D B 682', 2, -1, 'EFG 11']]
每当我尝试将列表放入 xlsx 文件时,只会添加第一个子列表,如下所示:
我希望这样添加:
我使用的代码是这样的:
import os
import glob
import pandas as pd
from openpyxl import load_workbook
os.chdir(r'C:\Myfolder')
files = glob.glob('*.xlsx') #Iterate through all xlsx files in desired folder
numbers = [] #Creating an open list
for file in files:
df = pd.read_excel(file) #Creating dataframe of xlsx files with pandas
m = (df.iloc[:, 4] - df.iloc[:, 1]) != 0 #Finding all of the rows where cell value number 4 - cell value number 1 is not equal to 0
pos = [0, 1, 3, 4, 6]
numbers = (df.loc[m, df.columns[pos]].values.tolist()) #Adding these rows to the list
print(numbers) #See numbers list written earlier
report = load_workbook(r"C:\Myworkbook.xlsx")
ws = report.create_sheet('Mysheet')
for _list in numbers:
for row_data in _list:
ws.append([row_data])
report.save(r"C:\Myworkbook.xlsx")
我的问题是: 1:我有什么样的清单? (数字列表)它不是列表的列表,因为列表会针对迭代的每个 xlsx 文件关闭。 2: 有谁知道如何将数据正确地放入我的 xlsx 文件中?
您没有得到列表的列表,因为您正在为循环中的每个传递覆盖 numbers
变量。
改变
numbers = (df.loc[m, df.columns[pos]].values.tolist())
至
numbers.append(df.loc[m, df.columns[pos]].values.tolist())