【问题标题】:Pandas Merge DataFrame Columns With Same Name But Different RowsPandas 合并具有相同名称但不同行的 DataFrame 列
【发布时间】:2020-01-02 21:42:30
【问题描述】:

我想合并两个数据框。两者具有相同的列名,但行数不同。

较小数据框的值应替换其他数据框的值

到目前为止,我尝试使用 pd.merge

pd.merge(df1, df2, how='left', on='NodeID)

但我不知道如何告诉合并命令将正确数据框中的值用于列“X”和“Y”。

df1 = pd.DataFrame(data={'NodeID': [1, 2, 3, 4, 5], 'X': [0, 0, 0, 0, 0], 'Y': [0, 0, 0, 0, 0]})
df2 = pd.DataFrame(data={'NodeID': [2, 4], 'X': [1, 1], 'Y': [1, 1]})

结果应该如下所示:

df3 = pd.DataFrame(data={'NodeID': [1, 2, 3, 4, 5], 'X': [0, 1, 0, 1, 0], 'Y':[0, 1, 0, 1, 0]})

【问题讨论】:

  • df2.set_index('NodeID').combine_first(df1.set_index('NodeID')).reset_index()

标签: python pandas dataframe merge multiple-columns


【解决方案1】:

这可以通过concatdrop_duplicates 完成

pd.concat([df2,df1]).drop_duplicates('NodeID').sort_values('NodeID')
Out[763]: 
   NodeID  X  Y
0       1  0  0
0       2  1  1
2       3  0  0
1       4  1  1
4       5  0  0

【讨论】:

    猜你喜欢
    • 2014-01-18
    • 2014-09-28
    • 2021-11-02
    • 2021-02-24
    • 2020-11-17
    • 1970-01-01
    • 2022-10-18
    • 2015-01-25
    • 1970-01-01
    相关资源
    最近更新 更多