【问题标题】:Insert values associated to occurrences of column value using 2 Pandas DF's使用 2 个 Pandas DF 插入与出现的列值关联的值
【发布时间】:2020-04-28 18:50:03
【问题描述】:

我有两个 df

df1
col_1  col_2    col_3
  1     a1     "text1"
  2     a2     "text2"
  3     a1     "text3"
  4     a1     "text4"
df2
col_1  col_2
  1     a1     
  2     a2     
  3     a3    

df1 在 col_2 中多次出现一个值(学生),而 df2 只有一次出现。我对 df1 的 col_3 中的文本感兴趣。

我需要将 df1 的文本列插入 df2,处理 col_2 的多次出现。 最终结果应该是这样的:

final_df

col_1   col_2        text_from_df1
  1        a1    ["text1,"text3","text4"]
  2        a2          ["text2"]
  3        a3             NaN

有什么想法吗?我在这里有点难过。

【问题讨论】:

标签: python pandas dataframe multiple-columns


【解决方案1】:

您可以在df1 上使用groupby,然后根据它们的特定列right merge col_2:

df_final = pd.merge(df1.groupby('col_2')['col_3'].apply(list), df2, left_on=['col_2'], right_on = ['col_2'], how = 'right')

输出:

  col_2                  col_3  col_1
0    a1  [text1, text3, text4]      1
1    a2                [text2]      2
2    a3                    NaN      3

【讨论】:

    【解决方案2】:
    >>> df2.merge(df1.groupby('col_2')['col_3'].apply(list).rename('text_from_df1').reset_index(), how='left')
    
       col_1 col_2                text_from_df1
    0      1    a1  ["text1", "text3", "text4"]
    1      2    a2                    ["text2"]
    2      3    a3                          NaN
    

    不建议您在 pandas 中保留 list 类型的对象,因为这可能会导致后续问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2020-12-06
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多