如何在熊猫中写入加入列表的结果?

时间:2021-02-21 07:50:12

标签: python pandas

想象一下我有这样的数据框

  key   A
0  K0  A0
1  K1  A1
2  K2  A2
3  K3  A3
4  K4  A4
5  K5  A5

另一个

  key   B
0  K0  B0
1  K1  B1
2  K2  B2

df.set_index('key').join(other.set_index('key')) 的结果将是

      A    B
key
K0   A0   B0
K1   A1   B1
K2   A2   B2
K3   A3  NaN
K4   A4  NaN
K5   A5  NaN

我想将加入的结果合并到一个包含相应值列表的列中。 所以我想实现以下目标:

      AB
key
K0   A0,B0
K1   A1,B1
K2   A2,B2
K3    A3
K4    A4
K5    A5

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以在 dfconcat 数据框 otheraxis=0,然后通过 group 和聚合列 key A 结果数据框1}} 使用 ','.join

c = pd.concat([df, other.rename(columns={'B': 'A'})])
df_out = c.groupby('key').agg(AB=('A', ','.join))

或者,您可以使用 Series.mapkeydf 列中的值与 Bother 列中的值进行映射,然后在分隔符 A 周围添加带有映射列 B 的列 ,

B = df['key'].map(other.set_index('key')['B']).fillna('')
df_out = (df['A'] + ',' + B).str.rstrip(',').to_frame('AB')

>>> df_out

        AB
key       
K0   A0,B0
K1   A1,B1
K2   A2,B2
K3      A3
K4      A4
K5      A5