相关疑难解决方法(0)

Pandas groupby:如何获得字符串联合

我有这样的数据帧:

   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)

所以我希望任何系列方法都能奏效.有任何想法吗?

python pandas

111
推荐指数
7
解决办法
10万
查看次数

使用Pandas groupby连接多行中的字符串

我想基于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"列中应用某种字符串串联.任何帮助赞赏!

python-3.x pandas

32
推荐指数
6
解决办法
4万
查看次数

在pandas中将行转换为逗号分隔的字符串

我有一个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)

有没有人知道怎么做而不留下熊猫?看起来很简单,但找不到在熊猫里面做的方法.

python pandas

0
推荐指数
1
解决办法
6338
查看次数

标签 统计

pandas ×3

python ×2

python-3.x ×1