簡體   English   中英

Pandas:如何連接具有不同列的數據框?

[英]Pandas: How to concatenate dataframes with different columns?

我試圖在官方Pandas 文檔中找到答案,但發現它比幫助更令人困惑。 基本上我有兩個具有重疊但不相同的列列表的數據框:

df1:
   A   B
0  22  34
1  78  42

df2:
   B   C
0  76  29
1  11  67

我想合並/連接/附加它們,以便結果是

df3:
   A   B   C
0  22  34  nan
1  78  42  nan
2  nan 76  29
3  nan 11  67

應該相當簡單,但我嘗試了幾種直觀的方法,但總是出錯。 有人可以幫我嗎?

您需要與參數 how = outer 合並

df3 = df1.merge(df2, how = 'outer')

    A       B   C
0   22.0    34  NaN
1   78.0    42  NaN
2   NaN     76  29.0
3   NaN     11  67.0

如果您只想連接可以使用的數據幀。

pd.concat([df1,df2])

輸出:

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
0   NaN  76  11.0
1   NaN  11  67.0

然后你可以 reset_index 重新創建一個簡單的遞增索引。

pd.concat([df,df2]).reset_index(drop = True)

輸出:

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
2   NaN  76  11.0
3   NaN  11  67.0

@vaishali 和 @scott-boston 解決方案都有效。 更喜歡合並功能,因為它允許使用 how 參數更靈活地處理結果。 但是,如果涉及的列很少,則 concat 可以獲得更好的性能

要優化@scott-boston 答案,您還可以使用內部 concat 參數igonore_index自動調整索引大小,而無需調用另一個函數,代碼如下:

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

輸出

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
2   NaN  76  11.0
3   NaN  11  67.0

Python(版本 3.8.5)| 大熊貓(版本 1.1.3)

暫無
暫無

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

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