使用GroupBy从长格式到宽格式

时间:2018-09-09 07:45:48

标签: python pandas datetime group-by pandas-groupby

我一直在尝试找出如何成功进行以下操作。我尝试采样,分组...卡住了。

我有以下熊猫数据框示例:

date             |  price  |
09/09/2018 08:30 |  22.1   |
09/09/2018 08:35 |  22.12  |
09/09/2018 08:40 |  22.20  |
09/09/2018 08:45 |  22.13  |
09/09/2018 08:50 |  22.19  |
09/09/2018 08:55 |  22.39  |

我想在15分钟内将日期分组并获得以下数据框。

date_15          |  price_1  |  price_2  |  price 3  |
09/09/2018 08:30 |   22.1    |   22.12   |   22.20   |
09/09/2018 08:45 |   22.13   |   22.19   |   22.39   |

然后我将set_index('date_15')进行自己可以做的联接。

您能帮上忙吗?

1 个答案:

答案 0 :(得分:4)

使用groupby每隔15分钟对日期进行一次pd.Grouper,然后使用以下结果创建一个新的DataFrame:

df['date'] = pd.to_datetime(df.date, errors='coerce')
v = df.groupby(pd.Grouper(key='date', freq='15min'))['price'].apply(list)

pd.DataFrame(v.tolist(), index=v.index).add_prefix('price ')

                     price 0  price 1  price 2
date                                          
2018-09-09 08:30:00    22.10    22.12    22.20
2018-09-09 08:45:00    22.13    22.19    22.39