我有一个数据框(它是使用pivot函数的产物,这就是为什么它有c和a):
c 367235 419895 992194
a
1999-02-06 Nan 9 Nan
2000-04-03 2 Nan Nan
1999-04-12 Nan Nan 4
1999-08-08 2 Nan Nan
1999-11-01 8 5 1
1999-12-08 Nan 3 Nan
1999-08-17 Nan Nan 10
1999-10-22 Nan 3 Nan
1999-03-23 Nan 4 Nan
2000-09-29 9 Nan Nan
1999-04-30 Nan Nan 1
2000-09-30 9 Nan Nan
我想在此数据框的底部添加一个新行。新行中的每个单元格将评估其上方的列;如果列包含数字9,8或3,则单元格将评估为" TRUE"。如果列不包含这些数字,则单元格将评估为" FALSE"。最终,我的目标是使用" FALSE"删除列。使用drop函数创建一个数据集,如下所示:
c 367235 419895
a
1999-02-06 Nan 9
2000-04-03 2 Nan
1999-04-12 Nan Nan
1999-08-08 2 Nan
1999-11-01 8 5
1999-12-08 Nan 3
1999-08-17 Nan Nan
1999-10-22 Nan 3
1999-03-23 Nan 4
2000-09-29 9 Nan
1999-04-30 Nan Nan
2000-09-30 9 Nan
TRUE TRUE
我的问题:
我可以编写一个函数来评估列表中是否有多个数字,但我不能将此函数写入.apply。
也就是说,我发现这可用于确定一组数字是否在列表中:
我尝试对apply函数进行如下修改:
def BIS(i):
L1 = [9,8,3]
if i in L1:
return "TRUE"
else:
return "FALSE"
df_wanted.apply(BIS, axis = 0)
这会导致错误: ('系列的真值是不明确的。使用a.empty,a.bool(),a.item,a.any()。' u'出现在索引367235' )
这使我认为虽然.apply将整列作为输入,但它无法聚合所有单个单元格的真值,并提出有关该列的总真值。我抬头看了a.any和a.bool,看起来非常有用,但我不知道在哪里贴他们?例如,这没有用:
df_wanted.apply.any(BIS, axis = 0)
也没有这个
df_wanted.apply(BIS.any, axis = 0).
有人能指出我正确的方向吗?非常感谢提前