簡體   English   中英

匹配列並附加到數據框,Python 3.6

[英]Match columns and append to data frame, Python 3.6

我有大約50個excel文件,我想導入到dataframe並將所有文件合並到單個數據幀中。 但有些文件有3個,有些是4列。 每個文件作為不同的列以不同的順序。

所有文件中的不同列總數:5即col1,col2,col3,col4,col5

我知道如何導入,但在面臨問題的同時。

腳本:

dfAll = pd.DataFrame(columns=['col1', 'col2', 'col3', 'col4', 'col5')]
df= pd.read_excel('FilePath', sheetname='data1') # contains 3 columns i.e col1, col2, col5
columnsOFdf = df.columns
dfAll[columnsOFdf] = dfAll.append(df)

但是給出錯誤“ValueError:Columns必須和key一樣長”

我想將df ['col1','col2','col5']數據追加dfAll ['col1','col2','col5']

請幫忙解決這個問題。

連接將匹配您的列

dfs = []
files = [...]
for file_name in files:
    dfs.append(pd.read_excel(file_name, sheetname='data1'))
df = pd.concat(dfs)

df1 = pd.DataFrame(np.random.randn(3, 3), columns=list('ABC'))
df2 = pd.DataFrame(np.random.randn(3, 3), columns=list('BCD'))
>>> pd.concat([df1, df2])
          A         B         C         D
0 -2.329280  0.644155 -0.835137       NaN
1  0.666496 -1.299048  0.111579       NaN
2  1.855494 -0.085850 -0.541890       NaN
0       NaN -1.131514  1.023610 -0.514384
1       NaN  0.670063  1.403143 -0.978611
2       NaN -0.314741 -0.727200 -0.620511

此外,每次將數據框附加到現有數據框時,它都會返回一個副本 這將嚴重降低性能並被稱為二次復制。 您最好創建所有數據幀的列表,然后連接結果。

試試這個:

[dfAll.append(i) for i in df]

我希望這對你有幫助。

一種解決方案是將空列添加到從Excel文件加載的數據框中:

columns = ['col1', 'col2', 'col3', 'col4', 'col5']
dfAll = pd.DataFrame(columns=columns)
df= pd.read_excel('FilePath', sheetname='data1') # contains 3 columns i.e             col1, col2, col5
columnsOFdf = df.columns
for column in columns:
    if column not in columnsOFdf:
        df[column] = [""] * df.shape[0]
dfAll.append(df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM