Pandas数据框分组展示

5
假设我有一个以下格式的DataFrame。
      A      B
0    text1   200
1    text2   200
2    text1   400
3    text2   500
4    text1   300
5    text1   600
6    text2   300

我想要打印以下输出。
     A             B
0    text1,text2   200
2    text1         400
3    text2         500
4    text1,text2   300
5    text1         600

我没有顺序,只是想使用“B”列中的值匹配“A”列的文本标签。我知道可以使用df.groupby来完成。但是,我尚未成功地实现这一点。希望你能明白我的问题。

1个回答

9
你几乎可以使用普通的sum来完成这个操作:(查看文档)
In [11]: df.groupby('B').sum()
Out[11]:
              A
B
200  text1text2
300  text1text2
400       text1
500       text2
600       text1

您可以使用带有join的聚合进行操作,具体请参见aggregate文档join函数
In [12]: df.groupby('B').agg(lambda x: ', '.join(x.values))
Out[12]:
                A
B
200  text1, text2
300  text1, text2
400         text1
500         text2
600         text1

一如既往,你的回答简洁、优美、优雅。:) 谢谢,运行得非常完美。 - Nilani Algiriyage
1
此外,几乎有一个转换:df.groupby('B').transform(', '.join)(这可能更加优雅)...很高兴它能帮到你! - Andy Hayden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接