我有一个表有8700万行和5列。我也有一个单独的文件,大约3500字。我想检查.txt文件中的单词,并检查表中每行4列中的单词。如果该单词出现在任何列中,那么我想删除这些行。这将帮助我大大减少这里的行数。下面是我使用的代码
bad_words = pd.read_csv('badwords.txt')
bad_words.dtypes
words object
dtype: object
bad_words
words
0 word1
1 word3
2 word5
3 word13
4 word16
data
s.no column1 column2 column3 column4
1 aaaword1b aaaword2b aaaword3b aaaword4b
2 aaaword5b aaaword6b aaaword7b aaaword8b
3 aaaword9b aaaword10b aaaword11b aaaword12b
4 aaaword13b aaaword14b aaaword15b aaaword16b
5 aaaword17b aaaword18b aaaword19b aaaword20b
我想从坏单词文档中删除包含单词的行。它的输出应该是
data
s.no column1 column2 column3 column4
3 aaaword9b aaaword10b aaaword11b aaaword12b
5 aaaword17b aaaword18b aaaword19b aaaword20b
我试着做一些事情,比如
data[(data['column1'].str.contains("word1|word3|word5|word13|word16")==False)|
(data['column2'].str.contains("word1|word3|word5|word13|word16")==False)|
(data['column3'].str.contains("word1|word3|word5|word13|word16")==False)]
但我不确定我们是否能做到这一点,整个3500字。也不确定这是否是8700万行的有效方法。你知道吗
用字符串模式更新了问题,而不是直接的单词。抱歉,前面的要求不好。
有人能给我建议一个更好的方法吗?你知道吗
谢谢
我修改了你的例子,因为
word1
从技术上讲是在word11
和word12
中,我不认为这是你的意思。你知道吗设置
解决方案
我将使用
regex
和contains
创建布尔掩码
您可以使用
apply
方法按行检查,并使用isin
方法创建一个向量,指示该行是否包含bad_words
中的任何内容,然后根据返回的逻辑向量对原始数据帧进行子集划分:对于更新的问题,这里有一个选项可能会根据您的实际数据而起作用:
相关问题 更多 >
编程相关推荐