Python 使用pandas统计每行中的非空值

Python 使用pandas统计每行中的非空值,python,pandas,Python,Pandas,我有数据帧 site1 time1 site2 time2 site3 time3 site4 time4 site5 time5 ... time6 site7 time7 site8 time8 site9 time9 site10 time10 target session_id

我有数据帧

    site1   time1   site2   time2   site3   time3   site4   time4   site5   time5   ... time6   site7   time7   site8   time8   site9   time9   site10  time10  target
 session_id                                                                                 

21669   56  2013-01-12 08:05:57 55.0    2013-01-12 08:05:57 NaN NaT NaN NaT NaN NaT ... NaT NaN NaT NaN NaT NaN NaT NaN NaT 0
54843   56  2013-01-12 08:37:23 55.0    2013-01-12 08:37:23 56.0    2013-01-12 09:07:07 55.0    2013-01-12 09:07:09 NaN NaT ... NaT NaN NaT NaN NaT NaN NaT NaN NaT 0
77292   946 2013-01-12 08:50:13 946.0   2013-01-12 08:50:14 951.0   2013-01-12 08:50:15 946.0   2013-01-12 08:50:15 946.0   2013-01-12 08:50:16 ... 2013-01-12 08:50:16 948.0   2013-01-12 08:50:16 784.0   2013-01-12 08:50:16 949.0   2013-01-12 08:50:17 946.0   2013-01-12 08:50:17 0
114021  945 2013-01-12 08:50:17 948.0   2013-01-12 08:50:17 949.0   2013-01-12 08:50:18 948.0   2013-01-12 08:50:18 945.0   2013-01-12 08:50:18 ... 2013-01-12 08:50:18 947.0   2013-01-12 08:50:19 945.0   2013-01-12 08:50:19 946.0   2013-01-12 08:50:19 946.0   2013-01-12 08:50:20 0
我需要计算N列,其中站点!=楠。 我试着用

df[['site%s' % i for i in range(1, 11)]].count(axis=1)

但每一个身份证都会给我10个

我也试过了

train_df[sites].notnull().count(axis=1)
这也没用

期望输出

21669    2
54843    4
77292    10
114021   10

我只想用
计数

train_df[sites].count(axis=1)
count
专门统计非空值。当前实现的问题是,
notnull
生成布尔值,
bool
s肯定不是null,这意味着它们总是被计数


而且

df.notnull().count(axis=1)


a    5
b    5
c    5
d    5
e    5
f    5
g    5
h    5
dtype: int64
同样,用
count(axis=1)
交易
sum()
也可以达到目的

train_df[sites].notnull().sum()

train_df[sites].notnull().sum(轴=1)
?您只想对列中的
True
元素求和。或者,使用
train_df[sites].count(axis=1)
它会返回10到每个站点id@PetrPetrov尝试保存您的文件。。。查看我的编辑,它工作得很好。
train_df[sites].isnull().sum()
train_df[sites].isnull().any()
是两个更有用的习惯用法(第一个计算空值的数量,第二个显示是否有空值)
train_df[sites].notnull().sum()