所以我有两种方法来做同样的事情,我想知道哪一种更有效:
第一种方法从文本文件或数组加载列表,并使用列表标记数据帧:
import pandas as pd
ban_list = ['Al Gore', 'Kim jong-un','Kim jong un','Kim Jong Un', 'Al Sharpton','Kim jong il', 'Richard Johnson', 'Dick Johnson']
df=pd.DataFrame({'Users': [ 'Al Gore', 'Kim jong il', 'Kim jong un', 'Al Sharpton', 'James', 'Richard Johnson', 'Bill Gates', 'Alf pig', 'Dick Johnson', 'Python Monte'],
'Time': ['D','D','N','D','L','N', 'N','L','L','N']})
df['Banned'] = ''
for i in range(len(ban_list)):
df.loc[df.Users.str.contains(ban_list[i]) & (df.Banned == ''),'Banned'] = 'Yes'
第二种方法使用正则表达式模式而不是名称列表
^{pr2}$这两组代码的工作原理和作用都是一样的。到目前为止,问题是第一个不能区分大小写,第二个有一个警告UserWarning: This pattern has match groups. To actually get the groups, use str.extract. " groups, use str.extract.", UserWarning)
第一种方式的数组加载一个大的列表,第二种方式有多个步骤的regex。我应该用哪一个来提高效率?或者有其他方法可以改善这种情况吗?在
使用
isin
似乎有点干净(至少对我来说)因为你有一个很好的被禁用户列表(然后你可以将True/False映射为Yes/'':当然,如果True/False足够好,您可以只执行命令的第一部分:
^{pr2}$编辑:如果你有第二个列表,我会按如下方式进行:
^{3}$相关问题 更多 >
编程相关推荐