2017-08-17 39 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