當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame combine方法用法及代碼示例


Pandas DataFrame.combine(~) 方法組合了兩個 DataFrame 的列。請注意,隻有共享相同列標簽的列才會被合並。

參數

1. other | DataFrame

您想要與之組合的DataFrame。

2. func | function

該函數接受兩個參數:第一個 DataFrame 中的一列和第二個 DataFrame 中要組合的列,兩者均為類型 Series 。此函數的返回值必須是代表結果列的Series

3. fill_value | scalar | optional

將填充缺失值實例的值 (NaN)。填充發生在合並過程之前。默認情況下,fill_value=None

4. overwrite | boolean | optional

布爾值的含義如下:

說明

True

如果一個 DataFrame 中的列在另一個 DataFrame 中不存在,則合並列的條目將填充為 NaN

False

如果源 DataFrame 中的列在其他 DataFrame 中不存在,則該列將出現在合並的 DataFrame 中,並且其條目保持不變。

然而,反之則不然。如果另一個 DataFrame 具有源 DataFrame 中不存在的列,那麽這些列也將出現在最終的 DataFrame 中,但其條目填充為 NaN

默認情況下,overwrite=True 。請參閱下麵的示例以進行說明。

返回值

DataFrame,其列根據參數組合。

例子

基本用法

考慮以下數據幀:

df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"A":[1,8], "B":[2,9]})



   A  B   |      A  B
0  3  5   |   0  1  2
1  4  6   |   1  8  9

合並兩個 DataFrames 的列以僅保留較高的值:

df.combine(df_other, np.maximum)



   A  B
0  3  5
1  8  9

自定義函數

我們還可以為 func 傳入自定義函數:

def foo(col, col_other):   # a pair of Series
 return col + col_other
df.combine(df_other, foo)



   A   B
0  4   7
1  12  15

請注意以下事項:

  • foo 隻是計算並返回兩個 DataFrame 中一對匹配列的總和。

  • foo 在這裏被調用兩次,因為有兩對匹配的列標簽。

指定覆蓋

考慮以下列標簽不匹配的DataFrames:

df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"A":[1,8], "C":[2,9]})



   A  B   |      A  C
0  3  5   |   0  1  2
1  4  6   |   1  8  9

默認情況下, overwrite=True ,這意味著其他 DataFrame 中不存在的列將用 NaN 填充,反之亦然:

df.combine(df_other, np.maximum)



   A  B    C
0  3  NaN  NaN
1  8  NaN  NaN

這裏,列BCNaN,因為df沒有列C,而df_other沒有列B

我們可以通過設置 overwrite=False 來保持源 DataFrame 的列完整:

df.combine(df_other, np.maximum, overwrite=False)



   A  B  C
0  3  5  NaN
1  8  6  NaN

在這裏,請注意 C 列(僅出現在 df_other 中的列)的條目仍然由 NaN 填充。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | combine method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。