如图所示,我有一只熊猫。在这个框架中有更多的列与任务无关。
id pos value sente
1 a I 21
2 b have 21
3 b a 21
4 a cat 21
5 d ! 21
1 a My 22
2 a cat 22
3 b is 22
4 a cute 22
5 d . 22现在,我想对sente=sente中的所有行进行分组,并加入值中的单词,以便在列表中形成一个句子。因此,输出应该如下所示(一个由逗号分隔的字符串列表):
“我有只猫!”,“我的猫很可爱。”
我认为第一步是使用groupby("sente")
fill = (df.groupby("sente").apply(lambda df: df["value"].values)).reset_index().rename(columns={0: "content"})
fill = [word for word in fill["content"]
然而,这样做我得到了这个输出:
print(fill):
[array(['I','have','a','cat','!'],dtype=object), array(['My','cat','is','cute','.'],dtype=object)]
有没有办法连接句子中的所有单词而不将它们标记为单独的字符串,并删除数组和dtype部件?
发布于 2018-05-03 11:52:49
您需要加入所有的值,而不需要按空格进行最后的连接,然后追加它:
L = (df.groupby("sente")['value']
.apply(lambda x: ' '.join(x.iloc[:-1]) + x.iloc[-1])
.tolist())
print (L)
['I have a cat!', 'My cat is cute.']因为在!和.之前没有必要的空间
print (df.groupby("sente")['value'].apply(' '.join).tolist())
['I have a cat !', 'My cat is cute .']https://stackoverflow.com/questions/50154261
复制相似问题