我有一个数据帧(在Python 2.7中,pandas是0.15.0):df=
A B C
0 NaN 11 NaN
1 two NaN ['foo', 'bar']
2 three 33 NaN
我想对特定列中不包含空值的行应用一个简单的函数。我的功能尽可能简单: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”中的空值,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()只适用于整数列和字符串列,而不适用于“列表列”?
是否有更好的方法来检查列“C”中的空值,而不是这样:df[['A','C']].apply(lambda x: my_func(x) if(str(x[1]) != 'nan') else x, axis = 1)
谢谢你!