我有一个数据框,用于查看表单的填写方式。这是一个例子:
ID Name Postcode Street Employer Salary
1 John NaN Craven Road NaN NaN
2 Sue TD2 NAN NaN 15000
3 Jimmy MW6 Blake Street Bank 40000
4 Laura QE2 Mill Lane NaN 20000
5 Sam NW2 Duke Avenue Farms 35000
6 Jordan SE6 NaN NaN NaN
7 NaN CB2 NaN Startup NaN `
我希望在所有先前的列都已填充的情况下返回连续填充列的计数。最终输出应该类似于:
Name Postcode Street Employer salary
6 5 3 2 2
有很好的熊猫方式吗?我想可能有一种方法可以应用一个掩码,这样如果任何先前的布尔值为0,则当前列也为零然后计算,但我不确定这是否是最好的方法。
谢谢!
答案 0 :(得分:1)
我认为您可以使用notnull
和cummin
:
In [99]: df.notnull().cummin(axis=1).sum(axis=0)
Out[99]:
Name 6
Postcode 5
Street 3
Employer 2
Salary 2
dtype: int64
虽然注意到在我做之前我必须用浮动NaN替换你的NAN(Sue' s street),我认为ID是你的索引。
累积最小值是实现"应用掩码的一种方法,这样如果任何先前的布尔值为0,则当前列也为零",正如您预测的那样。
答案 1 :(得分:0)
也许cumprod
顺便说一句,你的df中有'NAN',我在notnull
这里尝试
df.notnull().cumprod(1).sum()
Out[59]:
ID 7
Name 6
Postcode 5
Street 4
Employer 2
Salary 2
dtype: int64