我是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文件中?
答案 0 :(得分:1)
您没有获得列表列表,因为您正在覆盖循环中每个传递的numbers
变量。
更改
numbers = (df.loc[m, df.columns[pos]].values.tolist())
到
numbers.append(df.loc[m, df.columns[pos]].values.tolist())