【问题标题】:Concatenating matching column values between 2 dataframes在 2 个数据帧之间连接匹配的列值
【发布时间】:2021-03-17 05:50:58
【问题描述】:

我有 2 个数据框。

df1 有 5 列和 3 行。第 1 行和第 2 列的“B”列具有相同的值。

      A    B    C    D     E

      a    b    c    d     data1
      o    b    g    h     data2
      i    j    k    l     data3
      

df2 有 4 列 2 行

       A     B    C   D

       x     b    z   o
       y     f    w   p

我想通过比较列“B”上 df1 和 df2 之间的匹配行(值是小写“b”)来更新 df2,并在 df2(“NewColumn”)中添加一个新列,其中数据从 df1 连接在“B”列(“data1:data2”)

更新 df2

       A     B    C   D     NewColumn

       x     b    z   o     data1:data2

这需要对这两个数据帧之间的所有匹配行进行。

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    你可以:

    1. merge其他dataframein所需的列
    2. groupby 列并根据需要将字符串连接在一起

    (df2.merge(df1[['B','E']])
        .groupby([*df1.columns[:-1]])['E']
        .agg(':'.join).reset_index())
    
        A   B   C   D   E
    0   x   b   z   o   data1:data2
    

    【讨论】:

    • 非常感谢大卫!还有一个问题,如果我想提出一个条件,即 df1 的“D”列是否具有值“h”,这意味着只有“data2”要写入 df2 的 NewColumn。你能帮忙吗?
    • @RishimMittal 我不确定我是否关注。
    • @RishimMittal switch df1[['B','E']] to df1.loc[df1['D'] == 'h', ['B','E']] 但是,如果只有一行,那么你不能分组,你会得到一个错误,但如果有多个 h 值,那么你会好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2019-02-15
    • 2023-03-10
    • 2021-11-27
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多