【问题标题】:How to concatenate pandas dataframes with override on one column?如何将熊猫数据框与一列上的覆盖连接起来?
【发布时间】:2019-07-23 16:22:33
【问题描述】:

考虑以下数据框:

import pandas as pd

data1={'column_a' : ['a','a','b','c','d','e'],
      'column_b' : [1,2,3,4,5,6],
      'column_c' : [9,8,6,4,5,4]}

data2={'column_a' : ['f','f','g','a','a','a'],
      'column_b' : [7,8,9,7,5,6],
      'column_c' : [6,8,7,6,5,4]}

df_1 = pd.DataFrame(data1)
df_2 = pd.DataFrame(data2)

您将如何连接 2 个数据帧,以便 df_2 附加到 df_1,但覆盖 column_a 上的 df_1? 我正在寻找以下结果

column_a    column_b    column_c
b   3   6
c   4   4
d   5   5
e   6   4
f   7   6
f   8   8
g   9   7
a   7   6
a   5   5
a   6   4

请注意顶部带有“a”的 2 行,来自 df_1 不再可用,因为它们被来自 df_2 的 3 a 覆盖。

【问题讨论】:

    标签: python pandas join overriding concat


    【解决方案1】:

    只需在appendconcat 之前做一个过滤器

    pd.concat([df_1.loc[~df_1.column_a.isin(df_2.column_a)],df_2])
    Out[29]: 
      column_a  column_b  column_c
    2        b         3         6
    3        c         4         4
    4        d         5         5
    5        e         6         4
    0        f         7         6
    1        f         8         8
    2        g         9         7
    3        a         7         6
    4        a         5         5
    5        a         6         4
    

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多