猿问

熊猫群:如何获得字符串的结合

熊猫群:如何获得字符串的结合

我有这样的数据:

   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

所以我希望任何系列赛方法都能奏效。有什么想法吗?


慕桂英3389331
浏览 391回答 3
3回答

慕沐林林

您可以使用apply方法将任意函数应用于分组数据。所以如果你想要一套,申请set..如果你想要一份清单,申请list.>>> d   A       B0  1    This1  2      is2  3       a3  4  random4  1  string5  2       !>>> d.groupby('A')['B'].apply(list)A1    [This, string]2           [is, !]3               [a]4          [random]dtype: object如果您想要其他的东西,只需编写一个函数来做您想要的,然后apply那,那个。

一只萌萌小番薯

您可以使用aggregate(或agg)函数来连接这些值。(未经测试的代码)df.groupby('A')['B'].agg(lambda col: ''.join(col))
随时随地看视频慕课网APP

相关分类

Python
我要回答