合并一列或另一列中缺少数据的数据框

时间:2019-09-30 07:07:13

标签: python pandas merge

我有两个要合并的数据帧(df1df2)。这两个数据帧都有一个公用密钥(id)。两个数据框都有列Feature1Feature2。对于每个id,属于Feature1的数据将位于df1df2中。 Feature2列也是如此。

我已经尝试合并这些数据帧,但是我得到了Feature1_xFeature1_y,而不是在最终数据帧中仅获得两列(具有ID的三列),因为它可以将np.nan值识别为有效值。有没有办法只获取Feature1Feature2而没有np.nan值?

dummy_data1 = {
        'id': ['1', '2', '3', '4', '5'],
        'Feature1': [np.nan, 'C', 'E', np.nan, np.nan],
        'Feature2': ['B', np.nan, np.nan, 'H', 'J']}
df1 = pd.DataFrame(dummy_data1, columns = ['id', 'Feature1', 'Feature2'])
dummy_data2 = {
        'id': ['1', '2', '3', '4', '5'],
        'Feature1': ['A', np.nan, np.nan, 'G', 'I'],
        'Feature2': [np.nan, 'D', 'F', np.nan, np.nan]}
df2 = pd.DataFrame(dummy_data2, columns = ['id', 'Feature1', 'Feature2'])

我希望得到:

dummy_data12 = {
        'id': ['1', '2', '3', '4', '5'],
        'Feature1': ['A', 'C', 'E', 'G', 'I'],
        'Feature2': ['B', 'D', 'F', 'H', 'J']}
df12 = pd.DataFrame(dummy_data12, columns = ['id', 'Feature1', 'Feature2'])

1 个答案:

答案 0 :(得分:0)

如果两个idDataFrame中的值相同,并且两个索引中的索引也相同:

df1.update(df2)
print (df1)
  id Feature1 Feature2
0  1        A        B
1  2        C        D
2  3        E        F
3  4        G        H
4  5        I        J

如果不确定可能的解决方案是DataFrame.combine_first,两者中的索引都由id列设置

df = df1.set_index('id').combine_first(df2.set_index('id')).reset_index()
print (df)
  id Feature1 Feature2
0  1        A        B
1  2        C        D
2  3        E        F
3  4        G        H
4  5        I        J