我有这个数据框df
:
date dir
0 2018-01-23 11:39:41 O1
1 2018-01-23 12:47:58 E0
2 2018-01-23 13:01:19 O1
3 2018-01-23 13:01:21 O1
4 2018-01-23 13:06:06 O1
5 2018-01-23 13:32:55 O1
6 2018-01-23 13:33:56 O1
7 2018-01-23 13:33:58 O1
8 2018-01-23 13:46:47 E0
9 2018-01-23 14:04:01 E0
10 2018-01-23 14:04:39 O1
11 2018-01-23 14:09:16 E0
12 2018-01-23 14:17:46 E0
...
我想按date
(每小时)和dir
(方向)计算发生次数。有两个不同的方向:E0
和O1
。
所以我做到了:
df = df.groupby(['dir',pd.Grouper(key='date', freq='H')]).size()
当然我得到了这样的东西:
dir date
E0 2018-01-23 12:00:00 1
2018-01-23 13:00:00 1
2018-01-23 14:00:00 5
...
O1 2018-05-21 19:00:00 1
2018-05-21 20:00:00 1
2018-05-22 06:00:00 2
...
但是我想为每个不同的方向创建一个新列:
date E0 O1
2018-05-21 19:00:00 1 0
2018-05-21 20:00:00 1 2
2018-05-22 06:00:00 2 0
...
我该怎么办?
使用Series.unstack
由第一级和参数fill_value
进行更换新的NaN
非存在组合的价值观dir
和date
S:
df = df.groupby(['dir',pd.Grouper(key='date', freq='H')]).size().unstack(0, fill_value=0)
print (df)
dir E0 O1
date
2018-01-23 11:00:00 0 1
2018-01-23 12:00:00 1 0
2018-01-23 13:00:00 1 6
2018-01-23 14:00:00 3 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句