У меня есть dataframe (в Python 2.7, pandas 0.15.0):
df=
A B C
0 NaN 11 NaN
1 two NaN ['foo', 'bar']
2 three 33 NaN
Я хочу применить простую функцию для строк, которая не содержит значений NULL в определенном столбце. Моя функция максимально проста:
def my_func(row):
print row
И мой применимый код выглядит следующим образом:
df[['A','B']].apply(lambda x: my_func(x) if(pd.notnull(x[0])) else x, axis = 1)
Он отлично работает. Если я хочу проверить столбцы "B" для значений NULL, pd.notnull()
работает отлично. Но если я выберу столбец "C", который содержит объекты списка:
df[['A','C']].apply(lambda x: my_func(x) if(pd.notnull(x[1])) else x, axis = 1)
то я получаю следующее сообщение об ошибке: ValueError: ('The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()', u'occurred at index 1')
Кто-нибудь знает, почему pd.notnull()
работает только для целых и строковых столбцов, но не для столбцов списка?
И есть ли лучший способ проверить значения NULL в столбце "C" вместо этого:
df[['A','C']].apply(lambda x: my_func(x) if(str(x[1]) != 'nan') else x, axis = 1)
Спасибо!