通过在行中选择日期时间值来转置 Pandas DataFrame

VS_*_*_FF 1 python pandas

我有一个简单的 Pandas DataFrame,如下所示:

Timestamp              Value
2017-01-03 00:00:00    13.05
2017-01-03 00:01:00    13.70
2017-01-03 00:02:00    13.07
...
2017-01-27 09:57:00    13.46
2017-01-27 09:58:00    13.43
2017-01-27 09:59:00    13.41
Run Code Online (Sandbox Code Playgroud)

我怎样才能转置它以便每天只有一行,以及特定小时和分钟的列(比如从 0 到 10 小时)(时间戳中没有秒,它们都是零)。

到目前为止,我可以成功地使用df[df.index.time < datetime.time(10,0)]每天 10 小时以下的行来选择行。但是如果我随后.T转置该选择,那么整个 DataFrame 就会转置为一个很长的行。如何.T从时间戳对每个不同日期的行批次执行该操作?(也可能把每一天的值放在转置数据集的第一列?

我宁愿避免自定义代码和循环,因为数据集很大,所以更喜欢内置的东西!

piR*_*red 5

将索引设置为日期和时间的多索引,后跟一个 unstack

df.set_index(
    [df.Timestamp.dt.date, df.Timestamp.dt.time]
).Value.rename_axis([None] * 2).unstack()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明