我有这样的数据帧:
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 !
Run Code Online (Sandbox Code Playgroud)
调用
In [10]: print df.groupby("A")["B"].sum()
Run Code Online (Sandbox Code Playgroud)
将返回
A
1 1.615586
2 0.421821
3 0.463468
4 0.643961
Run Code Online (Sandbox Code Playgroud)
现在我想为"C"列做"相同".因为该列包含字符串,sum()不起作用(尽管您可能认为它会连接字符串).我真正想看到的是每个组的一个列表或一组字符串,即
A
1 {This, string}
2 {is, !}
3 {a}
4 {random}
Run Code Online (Sandbox Code Playgroud)
我一直在努力想办法做到这一点.
Series.unique()(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.unique.html)不起作用,尽管
df.groupby("A")["B"]
Run Code Online (Sandbox Code Playgroud)
是一个
pandas.core.groupby.SeriesGroupBy object
Run Code Online (Sandbox Code Playgroud)
所以我希望任何系列方法都能奏效.有任何想法吗?
我想基于Pandas中的分组来合并数据帧中的几个字符串.
到目前为止这是我的代码:
import pandas as pd
from io import StringIO
data = StringIO("""
"name1","hej","2014-11-01"
"name1","du","2014-11-02"
"name1","aj","2014-12-01"
"name1","oj","2014-12-02"
"name2","fin","2014-11-01"
"name2","katt","2014-11-02"
"name2","mycket","2014-12-01"
"name2","lite","2014-12-01"
""")
# load string as stream into dataframe
df = pd.read_csv(data,header=0, names=["name","text","date"],parse_dates=[2])
# add column with month
df["month"] = df["date"].apply(lambda x: x.month)
Run Code Online (Sandbox Code Playgroud)
我希望最终结果如下所示:

我不知道如何使用groupby并在"text"列中应用某种字符串串联.任何帮助赞赏!
我有一个pandas DataFrame:
from pandas import DataFrame
import pandas as pd
df2 = DataFrame({'a' : ['one', 'one', 'two','two', 'three', 'two', 'one', 'six'],
'b' : ['x', 'y', 'z', 'y', 'x', 'y', 'x', 'x']})
Run Code Online (Sandbox Code Playgroud)
我需要使用列对其进行分组'a'.
df3 = df2.groupby(['a'])
Run Code Online (Sandbox Code Playgroud)
接下来,我想将列'b'转换为逗号分隔的字符串,结果表应如下所示:
a b
---------------
one j, k, l
two m, n, o
three p, q
Run Code Online (Sandbox Code Playgroud)
有没有人知道怎么做而不留下熊猫?看起来很简单,但找不到在熊猫里面做的方法.