熊猫群:如何获得字符串的结合我有这样的数据: A B C0 1 0.749065 This1 2 0.301084 is2 3 0.463468
a3 4 0.643961 random4 1 0.866521 string5 2 0.120737 !呼叫In [10]: print df.groupby("A")["B"].sum()会回来A1 1.6155862 0.4218213 0.4634684 0.643961现在我想对“C”栏做“同样”。因为该列包含字符串,SUM()无法工作(尽管您可能认为它会连接字符串)。我真正希望看到的是每个组的字符串列表或集合,即A1 {This, string}2 {is, !}3 {a}4 {random}我一直在设法做到这一点。Series.Unique()(http:/andas.pydata.org/大熊猫-docs/稳定/生成/panass.eries.unifie.html)不起作用,尽管df.groupby("A")["B"]是pandas.core.groupby.SeriesGroupBy object所以我希望任何系列赛方法都能奏效。有什么想法吗?
3 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
您可以使用apply方法将任意函数应用于分组数据。所以如果你想要一套,申请set..如果你想要一份清单,申请list.
>>> d
A B
0 1 This
1 2 is
2 3 a
3 4 random
4 1 string
5 2 !
>>> d.groupby('A')['B'].apply(list)
A
1 [This, string]
2 [is, !]
3 [a]
4 [random]
dtype: object
如果您想要其他的东西,只需编写一个函数来做您想要的,然后apply那,那个。
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
aggregate
agg
df.groupby('A')['B'].agg(lambda col: ''.join(col))
添加回答
举报
0/150
提交
取消