【问题标题】:Pandas: How to convert a 10-min interval timeseries into a dataframe?Pandas:如何将 10 分钟间隔时间序列转换为数据帧?
【发布时间】:2013-12-26 02:52:56
【问题描述】:

我有一个类似的时间序列:

ts = pd.Series(np.random.randn(60),index=pd.date_range('1/1/2000',periods=60, freq='2h'))

有没有一种简单的方法可以让行索引是日期,列索引是小时?

基本上我正在尝试将时间序列转换为数据帧。

【问题讨论】:

  • 您的问题标题指的是 10 分钟的间隔,但您的示例有 2 小时的频率。如果您真的是指 10 分钟,您是否希望将数据汇总为小时?
  • 不,那是我的错误。我只想把时间序列变成一个数据框,把行索引变成日期,把列变成 10 分钟的数据。真实数据是10分钟数据。

标签: python-2.7 pandas dataframe


【解决方案1】:

总有一种比我想要的方式更巧妙的方式来做事,但我会先制作一个平面框架,然后再进行旋转。类似的东西

>>> ts = pd.Series(np.random.randn(10000),index=pd.date_range('1/1/2000',periods=10000, freq='10min'))
>>> df = pd.DataFrame({"date": ts.index.date, "time": ts.index.time, "data": ts.values})
>>> df = df.pivot("date", "time", "data")

这会产生太大的框架而无法粘贴,但要查看左上角:

>>> df.iloc[:5, :5]
time        00:00:00  00:10:00  00:20:00  00:30:00  00:40:00
date                                                        
2000-01-01 -0.180811  0.672184  0.098536 -0.687126 -0.206245
2000-01-02  0.746777  0.630105  0.843879 -0.253666  1.337123
2000-01-03  1.325679  0.046904  0.291343 -0.467489 -0.531110
2000-01-04 -0.189141 -1.346146  1.378533  0.887792  2.957479
2000-01-05 -0.232299 -0.853726 -0.078214 -0.158410  0.782468

[5 rows x 5 columns]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2021-01-08
    • 2015-05-16
    相关资源
    最近更新 更多