gpt4 book ai didi

python - 如何在单个 np.where 条件中使用多个值?

转载 作者:行者123 更新时间:2023-12-04 02:25:15 24 4
gpt4 key购买 nike

我有一个如下所示的数据框

df = pd.DataFrame({'text': ["Hi how","I am fine","Ila say Hi","hello"],
'tokens':["test","correct","Tim",np.nan],
'labels':['A','B','C','D']})

我想使用 Or| 运算符来检查 np.where 中的多个值,而不是多个 np.where 条件条件如下

df['labels'] = np.where(df['tokens'] == ('test'|'correct'|is.na()),'new_label',df['labels'])

然而,这会导致错误

TypeError: unsupported operand type(s) for |: 'str' and 'str'

我希望我的输出如下所示。对于拥有数百万条记录的大数据,我该如何高效地执行此操作?

enter image description here

最佳答案

第一个想法是用列表中的某个值替换缺失值,例如测试然后通过Series.isin进行比较:

df['labels'] = np.where(df['tokens'].fillna('test').isin(['test','correct']),
'new_label',
df['labels'])
print (df)
text tokens labels
0 Hi how test new_label
1 I am fine correct new_label
2 Ila say Hi Tim C
3 hello NaN new_label

或者通过 | 链接另一个掩码用于按位 OR 形式比较 NaNs:

df['labels'] = np.where(df['tokens'].isin(['test','correct']) | df['tokens'].isna(),
'new_label',
df['labels'])
print (df)
text tokens labels
0 Hi how test new_label
1 I am fine correct new_label
2 Ila say Hi Tim C
3 hello NaN new_label

关于python - 如何在单个 np.where 条件中使用多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68285104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com