有一种方法可以检查一列(逗号分隔)中包含的值是否快速出现在另一列(句子)中。使用python保留存在的单词并删除pandas数据框中不存在的单词?
原始数据就是这样
|sentence | word|
----------------------
Hello World |world
Hi how are you |are, car
I am good |good,bad,sad, am
,结果应该像。
|sentence | word|
----------------------
Hello World |world
Hi how are you |are
I am good |good, am
应该考虑性能,因为这是一个巨大的数据集
答案 0 :(得分:1)
由于大多数熊猫的字符串操作不是矢量化的,因此您可以像这样进行列表理解:
LogDisplay.LogAdvanced.Add("Some text");
输出:
df['word'] = [', '.join([w for w in ws if w in s])
for s, ws in zip(df.sentence.str.lower(), df.word.str.split(',\s*'))
]
注意:这只是一个需要改进的想法,例如仅匹配单词(例如 sentence word
0 Hello World world
1 Hi how are you are
2 I am good good, am
)
更新,此改进仅与整个单词匹配:
regex