如何在熊猫中使用"AND"制作具有不同值的新列?



我有一个数据帧,包含名称和已验证列的值,我想看看条件是否满足,它会根据条件生成一个具有不同值的新列,例如:

名称 已验证
Mary
Julie
玛丽 No

你很接近。一旦你纠正了条件语句的结构,你就可以做一些类似map的事情,或者在中使用numpy

df['Identity'] = ((df['Name'].eq('Mary')) & (df['Verified'].eq('No'))).map({True:'Human',False:'Bot'})

或使用numpywhere

import numpy as np
df['Identity'] = np.where((df['Name'].eq('Mary')) & (df['Verified'].eq('No')),'Human','Bot')

这里有另一种使用np.where 的方法

df['Identify']=np.where(df['Name'].eq('Mary') & df['Verified'].eq('No'), 'Human', 'Bot')
df
Name    Verified    Identify
0   Mary    Yes         Bot
1   Julie   No          Bot
2   Mary    No          Human

您可以使用掩码,它比应用和映射方法更快:

mask = (df['name'] == 'Mary') & (df['Verified'] == 'No')
df.loc[mask,'Identity'] = 'Human'
df.loc[~mask,'Identity'] = 'Bot'

这个怎么样:

df['Identity'] = "Bot"
df.loc[(df['Name'] == "Mary") & (df['Verified'] == "No"), 'Identity'] = "Human"

类似于这个q:基于if-elif-else条件创建一个新列

最新更新