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)
但是我似乎无法弄清楚如何在语句中添加第二列。
石斑鱼可以作为列表传递。此外,您可以通过消除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将保留列的原始顺序。