我有一个这样的数据框:
A B C
0 1 0.749065 This
1 2 0.301084 is
2 3 0.463468 a
3 4 0.643961 random
4 1 0.866521 string
5 2 0.120737 !
呼叫
In [10]: print df.groupby("A")["B"].sum()
会回来的
A
1 1.615586
2 0.421821
3 0.463468
4 0.643961
现在我想对“C”列做“同样的”。因为该列包含字符串,sum()不起作用(尽管您可能认为它会连接字符串)。我真正想看到的是每个组的一个或一组字符串,即
A
1 {This, string}
2 {is, !}
3 {a}
4 {random}
我一直在想办法。
Series.unique()(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.unique.html)不起作用,尽管
df.groupby("A")["B"]
是一个
pandas.core.groupby.SeriesGroupBy object
所以我希望任何系列方法都能奏效。有什么想法吗?
可以使用
apply
方法对分组数据应用任意函数。所以如果你想要一个集合,应用set
。如果需要列表,请应用list
。如果你想要别的东西,只要写一个函数来做你想做的,然后
apply
。应用自己的函数时,不会自动排除非数值列。不过,这比将
.sum()
应用于groupby
要慢sum
默认情况下连接你想做什么就做什么
在一个完整的框架上,一次一组地执行此操作。关键是返回一个
Series
您可以使用
aggregate
(或agg
)函数连接这些值。(未经测试的代码)相关问题 更多 >
编程相关推荐