【问题标题】:how can I merge two dataframes that have same columns but it has different row values? [duplicate]如何合并具有相同列但具有不同行值的两个数据框? [复制]
【发布时间】:2020-08-29 18:10:42
【问题描述】:

我正在尝试将两个具有相同列和行数的数据框放在一起,但其中一个在某些行中有 nan 而另一个没有。

此示例使用 2 个 DF,但我必须使用大约 50 个 DF 来执行此操作,并将所有数据帧合并到 1 个中。

DF1:

   id   b    c
0  1   15    1
1  2   nan  nan
2  3   2     3
3  4   nan  nan

DF2:

   id   b    c
0  1   nan  nan
1  2   26    6
2  3   nan  nan
3  4   60    3

期望的输出:

   id   b    c
0  1   15    1
1  2   26    6
2  3   2     3
3  4   60    3

【问题讨论】:

  • df1.combine_first(df2)
  • df1.fillna(df2)
  • 谢谢@sushanth 和 anon01,这两个答案都成功了。我试图理解为什么这两个函数都适用。
  • 上一个问题讨论了不同之处:stackoverflow.com/questions/46676134/…。基本上,fillna 仅填充现有的 na col/row 值,而 combine_first 填充缺失值并添加 df1 中不存在的其他 cols/rows

标签: python python-3.x pandas dataframe


【解决方案1】:

如果你有

df1 = pd.DataFrame(np.nan, index=[0, 1], columns=[0, 1])
df2 = pd.DataFrame([[0, np.nan]], index=[0, 1], columns=[0, 1])
df3 = pd.DataFrame([[np.nan, 1]], index=[0, 1], columns=[0, 1])

那你可以更新df1

for df in [df2, df3]:
    df1.update(df)

print(df1)

     0    1
0  0.0  1.0
1  0.0  1.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多