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

标签 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

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

至此,我可以成功使用df[df.index.time < datetime.time(10,0)]为低于 10 小时的每一天选择行。但是如果我随后做 .T转置该选择,然后整个 DataFrame 被转置成一个很长的行。我该如何执行 .T从时间戳中为每个不同的日子对成批的行进行操作? (也可能将每个 Day 值放在转置数据集的第一列中?

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

最佳答案

将索引设置为日期和时间的多索引,然后是 unstack

df.set_index(
    [df.Timestamp.dt.date, df.Timestamp.dt.time]
).Value.rename_axis([None] * 2).unstack()

enter image description here

关于python - 通过选择行中的日期时间值来转置 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969382/

相关文章:

python - Splunk模块化输入更新参数

python - Windows 上的 Tensorflow 重新训练

python - Pandas Groupby 和 Sum Only 一列

python - Pandas 数据透视表重命名列

python-3.x - 将数据框“扩展”为矩阵索引

python - 使用带有权重的 numpy.average 对 pandas 数组进行重新采样

Python 将输出转换为句子

python - 创建日志记录处理程序以连接到 Oracle?

python - matplotlib 具有共享轴的子图

python - Pandas 线性插值按另一列分组