计算列值python pandas

时间:2017-10-21 15:45:14

标签: python pandas

提前道歉,我无法创建代码来生成样本数据。

这是我的数据框,列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

2 个答案:

答案 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