提前道歉,我无法创建代码来生成样本数据。
这是我的数据框,列B,C,D,E有预约日期。我试图计算每行存在的日期数,并将该数字附加到G列而不会打扰A列和F列。我需要一个函数吗?值的真/假然后算?有一个简单的方法吗?
A B C D E F G
0 1 20171021 20171021 20171021 20171021 id_123
1 2 NaN 20171021 20171021 20171021 id_234
2 3 NaN NaN 20171021 20171021 id_345
3 4 NaN NaN NaN 20171021 id_456
期望输出
A B C D E F G
0 1 20171021 20171021 20171021 20171021 id_123 4
1 2 NaN 20171021 20171021 20171021 id_234 3
2 3 NaN NaN 20171021 20171021 id_345 2
3 4 NaN NaN NaN 20171021 id_456 1
答案 0 :(得分:3)
基本上,请使用count
。
cnt = df[['B', 'C', 'D', 'E']].count(axis=1)
print(cnt)
0 4
1 3
2 2
3 1
dtype: int64
df['G'] = cnt
答案 1 :(得分:2)
您可以将非空值相加,即.notnull()
将给出布尔值掩码。布尔掩码的总和给出计数。
df['G'] = df.loc[:,'B':'E'].notnull().sum(1)
A B C D E F G 0 1 20171021.0 20171021.0 20171021.0 20171021 id_123 4 1 2 NaN 20171021.0 20171021.0 20171021 id_234 3 2 3 NaN NaN 20171021.0 20171021 id_345 2 3 4 NaN NaN NaN 20171021 id_456 1