【问题标题】:Merge and get only a subset of columns in pandas合并并仅获取熊猫中的一部分列
【发布时间】:2021-10-16 00:10:59
【问题描述】:

我有 2 个熊猫数据框如下:

 df1:
 id    name1
 123   AAA
 345   BBB

 df2:
 id_1   city address_1  address_2 province country mail
 123    SFO  -          -         -        -       -
 234    TO   -          -         -        -       -
 345    NY   -          -         -        -       -

我正在将 df1 与 df2 合并,但结果我只需要 df2 中的“城市”列。一种方法是我可以进行合并并将它们删除如下

df_merged = pd.merge(df1,df2,left_on='id',right_on='id_1',how='left').drop(columns=['address_1',..])

但是如果列数更多,在 drop 函数中指定所有那些不必要的列会变得很乏味。只是想知道是否有一种有效的方法来仅指定合并所需的列。

任何建议将不胜感激。

【问题讨论】:

  • 你可以做pd.merge(df1, df2[["id_1", "city"]],...)

标签: pandas merge


【解决方案1】:

如果您只需要城市列,您可以这样做:

df_merged = pd.merge(df1,df2,left_on='id',right_on='id_1',how='left')['City']

当然,如果您需要更多,您可以添加它们。只需确保添加第二秒的括号,对于 >1 列,您需要传递一个列表。

【讨论】:

    【解决方案2】:

    您可以在合并步骤中从 df2 中选择相关列。

    df_merged = pd.merge(df1,
                        df2[[ 'id_1', 'City']],
                        left_on='id',right_on='id_1',how='left')
    

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2018-08-25
      • 2019-08-01
      • 2018-05-10
      • 1970-01-01
      • 2017-04-17
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多