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
另一种可能的解决办法是:
另一种可能的解决办法是: