我有一个看起来像这样的数据框:
df:
Source Text
Agent aa
Agent ab
Visitor ac
Agent ad
Visitor ae
Visitor ba
Visitor bb
Agent bc
Agent bd
Agent be
我想创建一个看起来如下的新数据框:
Source Text
Agent aa ab
Visitor ac
Agent ad
Visitor ae ba bb
Agent bc bd be
因此,对于座席/访客交谈的每个新实例,我想将一个人在新单元格中所说的不同内容合并在一起。
我找到了this post,但这太具体了,我看不到如何将其应用于我的数据框。
答案 0 :(得分:1)
您可以groupby
乘Series
,由Source
的{{3}}移到cumsum
和join
来创建,最后使用双{ {3}}-第一个用于从Source
移除第一级的MultiIndex,第二个用于列:
g = df['Source'].ne(df['Source'].shift()).cumsum()
df1 = (df.groupby([g, 'Source'])['Text']
.apply(' '.join)
.reset_index(level=0, drop=True)
.reset_index())
print (df1)
Source Text
0 Agent aa ab
1 Visitor ac
2 Agent ad
3 Visitor ae ba bb
4 Agent bc bd be
答案 1 :(得分:0)
尝试一下。
d=df.groupby("Source").groups
print(pd.DataFrame([ [k,' '.join(list(df.groupby("Source").get_group(k)["Text"]))] for k in d.keys() ],columns=["Source","Text"]))