使用pandas GroupBy聚合字符串列

Mi.*_*Mi. 3 python group-by dataframe pandas pandas-groupby

我有一个DF,如下所示:

df =

vid   pos      value       sente
1     a         A           21
2     b         B           21
3     b         A           21
3     a         A           21
1     d         B           22
1     a         C           22
1     a         D           22
2     b         A           22
3     a         A           22
Run Code Online (Sandbox Code Playgroud)

现在,我想所有的行与相同的值相结合sente,并vid为到一行与值value由加盟" "

df2 =

vid   pos      value       sente
1     a         A           21
2     b         B           21
3     b a       A A         21
1     d a a     B C D       22
2     b         A           22
3     a         A           22
Run Code Online (Sandbox Code Playgroud)

我认为对此的修改应该可以解决问题:

df2 = df.groupby["sente"].agg(lambda x: " ".join(x))
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法弄清楚如何在语句中添加第二列。

cs9*_*s95 6

石斑鱼可以作为列表传递。此外,您可以通过消除lambda的代码来简化您的解决方案-不需要它。

df.groupby(['vid', 'sente'], as_index=False, sort=False).agg(' '.join)

   vid  sente    pos  value
0    1     21      a      A
1    2     21      b      B
2    3     21    b a    A A
3    1     22  d a a  B C D
4    2     22      b      A
5    3     22      a      A
Run Code Online (Sandbox Code Playgroud)

其他一些注意事项:指定as_index=False意味着您的石斑鱼将在结果中显示为列(而不是默认的索引)。此外,sort=False将保留列的原始顺序。