我在第一列有两个具有相同列名和相同id的数据帧。除了ID列之外,在一个数据框中包含值的每个单元格在另一个数据框中都包含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
我想将它们合并到一个数据框中,同时保持相同的列名。结果如下:
ID Cat1 Cat2 Cat3
1 54 75 44
2 61 38 84
3 49 50 53
我试过:
df3 = pd.merge(df1, df2, on='ID', how='outer')
它给了我一个包含两倍列的数据帧。如何将每个数据帧中的值合并为一个?
在这种情况下,首先合并功能是合适的。(http://pandas.pydata.org/pandas-docs/version/0.13.1/merging.html)
顾名思义,combineúfirst获取第一个数据帧,并将第二个数据帧中的值添加到第一个数据帧中找到NaN值的任何位置。
所以:
生成一个新的数据帧df3,本质上就是df1,只要可能,就用df2中的值填充它。
您也可以将df1中的NaN值更改为df2中的非NaN值。
您可能需要df.update。请参阅documentation。
相关问题 更多 >
编程相关推荐