【发布时间】:2018-08-27 10:33:08
【问题描述】:
在将 DateTimeC 列转换为日期时间类型后,我有一个数据框,df,例如:
Index DateTimeC eventName
0 2017-08-20 01:11:24.210000 ABC
1 2017-08-20 01:11:30.224000 CDE
2 2017-08-20 02:16:30.210000 CDE
3 2017-08-20 02:27:30.211000 CDE
2 2017-09-10 01:30:40.212000 DEF
3 2017-09-11 01:35:23.122000 CDE
4 2017-09-11 02:22:22.145000 CDE
5 2017-09-16 02:26:11.222000 DEF
我打算按月和小时分组,并计算分组对象中 eventName 中的事件数。所以应用此代码:
df2=df.groupby([df['DateTimeC'].dt.month,df['DateTimeC'].dt.hour])['EventName'].count()
我明白了:
Index EventName
8,1 2
8,2 2
9,1 2
9,2 2
但是,我想将结果系列上的 pivot_table () 用作索引,将小时用作列,而 value 参数应该是频率。所以生成的数据框应该是:
Index 0 1 2 3 4 5 6 7 8... 24
8 0 2 2 0 0 0 0 0 0... 0
9 0 2 2 0 0 0 0 0 0... 0
那么对应的参数是什么 pivot_table() 因为日期和时间在同一列:DateTimeC
我尝试添加 rename_index 来重命名频率/计数结果的列,这样我就可以使用以下代码将新名称传递给 pivot_table () 中的“值”参数:
df2=df.groupby([df['DateTimeC'].dt.month,df['DateTimeC'].dt.hour])['EventName'].count().reset_index(name='frequency')
但我收到此错误:
ValueError: cannot insert DateTimeC, already exists
此外,获取每个月每小时的平均值,并将与特定月份关联的数字转换为对应的单词
Index averagePerHour
August 0.17
September 0.17
【问题讨论】:
标签: python pandas pivot-table