我有一个数据框,其中行是时间,列是日期,每个输入值是频率。如何在每天的30分钟内生成一个直方图显示,有多少个频率?
我目前使用df.groupby(pd.Grouper(freq='30Min')).count()
。
但是,count()
不接受输入值。
例如,数据框如下所示:
03/12 03/13
1:00:01 2 3
1:00:02 3 4
1:31:03 1 2
当前输出为:
03/12 03/13
1:00:00 2 2
1:30:00 1 1
所需的输出应为:
03/12 03/13
1:00:00 5 7
1:30:00 1 2
正如@jezrael所述,我在数据集中对resample
进行了基准测试。
结果如下:
In [270]: %timeit date_df.resample('30Min').count()
7.7 ms ± 10.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [271]: %timeit date_df.groupby(pd.Grouper(freq='30Min')).count()
7.99 ms ± 49.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
答案 0 :(得分:0)
使用sum
:
df1 = df.groupby(pd.Grouper(freq='30Min')).sum()
#alternative solution
#df1 = df.resample('30Min').sum()
print (df1)
03/12 03/13
01:00:01 5 7
01:30:01 1 2