Sla*_*ron 4 python merge dataframe pandas
我在第一列中有两个具有相同列名和相同 ID 的数据框。除了 ID 列之外,在一个 DataFrame 中包含值的每个单元格在另一个 DataFrame 中都包含 NaN。以下是它们的外观示例:
ID Cat1 Cat2 Cat3
1 NaN 75 NaN
2 61 NaN 84
3 NaN NaN NaN
ID Cat1 Cat2 Cat3
1 54 NaN 44
2 NaN 38 NaN
3 49 50 53
Run Code Online (Sandbox Code Playgroud)
我想将它们合并到一个 DataFrame 中,同时保持相同的列名。所以结果应该是这样的:
ID Cat1 Cat2 Cat3
1 54 75 44
2 61 38 84
3 49 50 53
Run Code Online (Sandbox Code Playgroud)
我试过:
df3 = pd.merge(df1, df2, on='ID', how='outer')
Run Code Online (Sandbox Code Playgroud)
这给了我一个包含两倍列数的 DataFrame。如何将每个 DataFrame 中的值合并为一个?
在这种情况下,combine_first函数是合适的。( http://pandas.pydata.org/pandas-docs/version/0.13.1/merging.html )
顾名思义, combine_first 获取第一个 DataFrame 并将第二个值添加到其中,只要它在第一个中找到 NaN 值。
所以:
df3 = df1.combine_first(df2)
Run Code Online (Sandbox Code Playgroud)
生成一个新的数据帧 df3,它本质上只是 df1,并尽可能填充 df2 中的值。