我有一个由.csv
生成的数据帧(我使用Python 3.5)。 df['category']
仅包含字符串。我想要的是检查此列,以及字符串是否包含特定的子字符串(只要它们存在,对它们在字符串中的位置并不真正感兴趣)就可以替换。我正在使用此脚本
import pandas as pd
df=pd.read_csv('lastfile.csv')
df.dropna(inplace=True)
g='Drugs'
z='Weapons'
c='Flowers'
df.category = df.category.str.lower().apply(lambda x: g if ('mdma' or 'xanax' or 'kamagra' or 'weed' or 'tabs' or 'lsd' or 'heroin' or 'morphine' or 'hci' or 'cap' or 'mda' or 'hash' or 'kush' or 'wax'or 'klonop'or\
'dextro'or'zepam'or'amphetamine'or'ketamine'or 'speed' or 'xtc' or 'XTC' or 'SPEED' or 'crystal' or 'meth' or 'marijuana' or 'powder' or 'afghan'or'cocaine'or'haze'or'pollen'or\
'sativa'or'indica'or'valium'or'diazepam'or'tablet'or'codeine'or \
'mg' or 'dmt'or'diclazepam'or'zepam'or 'heroin' ) in x else(z if ('weapon'or'milit'or'gun'or'grenades'or'submachine'or'rifle'or'ak47')in x else c) )
print(df['category'])
我的问题是,尽管某些记录包含我定义的某些子字符串,但它们不会被替换。是正则表达式相关的问题吗? 预先谢谢你。
答案 0 :(得分:2)
使用替换字符串的键创建子字符串列表的字典,对其进行循环,并用正则表达式|
的{{1}}连接所有列表值,因此可以用contains
检查列并替换匹配的行与OR
:
loc