Ошибка Python Log 'NonType' - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в 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

Есть идеи?

1 Ответ

0 голосов
/ 09 мая 2018

Похоже, у вас есть не строковые типы в вашей серии. Попробуйте установить 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
...