Python 使用groupby中的一列创建X个带有熊猫的新列

Python 使用groupby中的一列创建X个带有熊猫的新列,python,pandas,Python,Pandas,我有这个数据帧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

我有这个数据帧
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
...
我想按
日期(每小时)和
方向(方向)计算发生次数。
有两个不同的方向:
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
...
我该怎么做呢?

第一级和参数
填充值
用于替换新的
NaN
s值,用于不存在的组合
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
由第一级和参数
fill\u value
用于替换新的
NaN
s值,用于不存在的组合
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

另一种可能的解决办法是:


另一种可能的解决办法是: