pandas groupby time获得NaN的数量和总数
我有这个数据框:pandas groupby time获得NaN的数量和总数,pandas,Pandas,我有这个数据框: start_time is_set 0 2017-03-24 11:08:50 NaN 1 2017-03-24 11:08:50 1 2 2017-03-24 12:09:00 2 3 2017-03-24 12:20:00 1 4 2017-03-24 12:25:10 2 5 2017-03-23 15:30:16 NaN 6 2017-03-23 15
start_time is_set
0 2017-03-24 11:08:50 NaN
1 2017-03-24 11:08:50 1
2 2017-03-24 12:09:00 2
3 2017-03-24 12:20:00 1
4 2017-03-24 12:25:10 2
5 2017-03-23 15:30:16 NaN
6 2017-03-23 15:50:35 NaN
7 2017-03-23 21:39:08 1
8 2017-03-23 21:41:20 1
9 2017-03-23 23:31:34 2
我想对每小时的行进行分组,并计算每个组的NAN数和总数,结果应该是:
start_time nans total
0 2017-03-24 11 1 2
1 2017-03-24 12 0 3
2 2017-03-23 15 2 2
3 2017-03-23 21 0 2
4 2017-03-23 23 0 1
让我们试试
groupby.agg
:
new_df = df.groupby(df['start_time'].dt.floor('H'))['is_set'].agg([lambda x: x.isna().sum(), 'size'])
new_df.columns = ['nans','total']
输出:
nans total
start_time
2017-03-23 15:00:00 2.0 2
2017-03-23 21:00:00 0.0 2
2017-03-23 23:00:00 0.0 1
2017-03-24 11:00:00 1.0 2
2017-03-24 12:00:00 0.0 3
您还可以使用命名agg:
(df.groupby(df['start_time'].dt.floor('H'))
.agg(nans=('is_set',lambda x: x.isna().sum()),
total=('is_set', 'size')
)
.reset_index()
)