列表格式问题(列表列表?)

时间:2017-08-17 09:00:31

标签: python list openpyxl

我是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 个答案:

答案 0 :(得分:1)

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

更改

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

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