使用pandas.concat()將兩張excel表合並


1.縱向連接DataFrame對象
(1)兩個DataFrame對象的列完全相同

# 初始化兩個DataFrame對象
df1 = pd.DataFrame([['a', 1], ['b', 2]],
                columns=['letter', 'number'])

df2 = pd.DataFrame([['c', 3], ['d', 4]],
                  columns=['letter', 'number'])

display(df1)
display(df2)

# 合並對象
pd.concat([df1, df2])

從上面的結果可以看到,concat重新連接到DataFrame對象,並合並之后不改變每個DataFrame子對象的索引值,因此可以在合並之后的DataFrame中看到索引的值0和1重復了兩次。
如果希望重新設置合並之后的DataFrame對象的索引值,則可以添加ignore_index = True參數:

pd.concat([df1, df2], ignore_index=True)

(2)兩個DataFrame對象的列不完全相同

# 初始化DataFrame對象
df1 = pd.DataFrame([['a', 1], ['b', 2]],
                columns=['letter', 'number'])

df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
                  columns=['letter', 'number', 'animal'])

display(df1)
display(df3)

# 合並對象
pd.concat([df1, df3], sort=False)  # sort=False : 列的順序維持原樣, 不進行重新排序。

從結果可以看到,因為df1中沒有動物列,所以在合並之后的DataFrame對象里,所對應的元素都被設置成了NaN。
如果只想合並相同的列,我們可以添加上join ='inner'參數:

pd.concat([df1, df3], join='inner')

 

2.橫向合並DataFrame對象
通過設置axis = 1,可以橫向合並兩個DataFrame對象。

# 初始化DataFrame對象
df1 = pd.DataFrame([['a', 1], ['b', 2]],
                columns=['letter', 'number'])

df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],
                  columns=['animal', 'name'])

display(df1)
display(df4)

# 合並對象
pd.concat([df1, df4], axis=1)

 

注:配合os.walk()使用,可以將指定文件夾內的所有excel文件遍歷讀取,並縱向合並,實現批量合並excel文件。

 

 

 

參考原文:知乎@曉偉

https://www.zhihu.com/tardis/sogou/art/69224745


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM