pandas GroupBy 中的逗号分隔值

ynt*_*tnm 1 python group-by dataframe pandas pandas-groupby

我试图找出在连接值时是否可以删除数据框中的重复项

例子:

df
   key  v1  v2
0  1   n/a  a
1  2   n/a  b
2  3   n/a  c
3  2   n/a  d
4  3   n/a  e
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

 df_out
   key v1   v2
0  1   n/a  a
1  2   n/a  b,d
2  3   n/a  c,e
Run Code Online (Sandbox Code Playgroud)

我尝试使用 df.drop_duplicates() 和一些循环来保存 v2 列值,但什么也没有。我试图通过使用 Pandas 来做到干净整洁,没有循环。

有人知道熊猫可以做到这一点吗?

cs9*_*s95 7

假设您有两列,这应该很容易。使用groupby+ aggv1应按 聚合first,并v2应按 聚合','.join

df
   key  v1 v2
0    1 NaN  a
1    2 NaN  b
2    3 NaN  c
3    2 NaN  d
4    3 NaN  e
Run Code Online (Sandbox Code Playgroud)

(df.groupby('key')
   .agg({'v1' : 'first', 'v2' : ','.join})
   .reset_index()
   .reindex(columns=df.columns))

   key  v1   v2
0    1 NaN    a
1    2 NaN  b,d
2    3 NaN  c,e
Run Code Online (Sandbox Code Playgroud)

如果您有多个此类列需要相同的聚合,请构建一个名为 的聚合字典f并将其传递给agg.