2017-08-17 38 views
-1

我是新来的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文件,只有第一子列表中添加,如:

Worksheet

我希望它被添加像这样:

Desired worksheet

我使用的代码是这样的:

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文件?

回答

1

您没有得到列表的列表,因为您正在覆盖循环中每次传递的numbers变量。

变化

numbers = (df.loc[m, df.columns[pos]].values.tolist()) 

numbers.append(df.loc[m, df.columns[pos]].values.tolist()) 
+0

谢谢您的回复:) – Pexe