gpt4 book ai didi

python - 使用 Pandas groupby 连接多行字符串

转载 作者:行者123 更新时间:2023-12-02 08:58:12 25 4
gpt4 key购买 nike

我想基于 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)

我希望最终结果如下所示:

enter image description here

我不明白如何使用 groupby 并应用“文本”列中字符串的某种串联。任何帮助表示赞赏!

最佳答案

您可以按 'name' 进行分组和'month'列,然后调用transform它将返回与原始 df 对齐的数据,并在 join 处应用 lambda文本条目:

In [119]:

df['text'] = df[['name','text','month']].groupby(['name','month'])['text'].transform(lambda x: ','.join(x))
df[['name','text','month']].drop_duplicates()
Out[119]:
name text month
0 name1 hej,du 11
2 name1 aj,oj 12
4 name2 fin,katt 11
6 name2 mycket,lite 12

我通过传递感兴趣的列列表来子化原始 df df[['name','text','month']]然后调用drop_duplicates

编辑实际上我可以调用 apply然后reset_index :

In [124]:

df.groupby(['name','month'])['text'].apply(lambda x: ','.join(x)).reset_index()

Out[124]:
name month text
0 name1 11 hej,du
1 name1 12 aj,oj
2 name2 11 fin,katt
3 name2 12 mycket,lite

更新

lambda这里是不必要的:

In[38]:
df.groupby(['name','month'])['text'].apply(','.join).reset_index()

Out[38]:
name month text
0 name1 11 du
1 name1 12 aj,oj
2 name2 11 fin,katt
3 name2 12 mycket,lite

关于python - 使用 Pandas groupby 连接多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com