我'我是python的新手,想问下列内容: 我收到此错误消息
一元的坏操作数类型〜:' NoneType'
当我运行一个非常简单的数据步骤时:
df['new_FLAG'] = np.where(~(df.var2.str.contains('Test|Random|Hypo|Sample',case = False)) &
df.var3.isin(['CLIENT_CURRENT', 'MODEL_CURRENT', 'HYPOTHETICAL']) &
(df.var1> 4) & (df.var1< 31)
,'Y','N')
我的数据框是这样的:
var1 var2 var3
0 17 AMPF PCA 5.9.18 MODEL_CURRENT
1 17 AMPF PCA 5.9.18 MODEL_CURRENT
2 17 AMPF PCA 5.9.18 MODEL_CURRENT
3 17 AMPF PCA 5.9.18 MODEL_CURRENT
4 17 AMPF PCA 5.9.18 MODEL_CURRENT
有什么想法吗?
答案 0 :(得分:0)
您的系列中似乎有非字符串类型。尝试在na=False
中设置pd.Series.str.contains
来更正此问题。 None
的否定未定义,这是您的错误所指示的。
这是一个最小的例子:
s = pd.Series(['Testing', 'AnotherSTring', 2.5, 'Something Else', np.nan, 'Sampler'])
res1 = s.str.contains('Test|Random|Hypo|Sample', case=False)
# 0 True
# 1 False
# 2 NaN
# 3 False
# 4 NaN
# 5 True
# dtype: object
res2 = s.str.contains('Test|Random|Hypo|Sample', case=False, na=False)
# 0 True
# 1 False
# 2 False
# 3 False
# 4 False
# 5 True
# dtype: bool