gpt4 book ai didi

python - Pandas 将分钟数字索引(0 到 1440)转换为日期时间

转载 作者:行者123 更新时间:2023-11-30 23:19:38 26 4
gpt4 key购买 nike

我有一个 DataFrame,P,格式为:

                0             1             2
0 10088.245329 9905.462496 12328.830197
1 10092.783624 9688.034026 11785.442316
2 10312.043154 9501.677065 11784.126068
3 10314.919339 9694.886693 11419.465596
...
1438 9636.005396 9544.771643 14181.272599
1439 9414.292352 9312.184926 13988.822708

索引代表一天中的分钟。

我想将其重新格式化为数据时间对象,以便我可以将数据重新采样到半小时一次的数据箱中。

我一直在使用 to_datetime 函数来执行此操作:

P.index=pd.to_datetime(P.index,format='%M')

这可以获取分钟,但不能获取正确的小时:

<class 'pandas.tseries.index.DatetimeIndex'>
[1900-01-01 00:00:00, ..., 1900-01-01 00:59:00]

有人知道怎么做吗?

编辑:

我成功做到了:

pd.to_datetime([(str(int(x))+' '+str(y)) for x,y in zip(np.floor(P.index/60),P.index%60)],format='%H %M')
<class 'pandas.tseries.index.DatetimeIndex'>
[1900-01-01 00:00:00, ..., 1900-01-01 23:59:00]
Length: 1440, Freq: None, Timezone: None

我感觉还有更好的方法?

最佳答案

在我放置np.arange(1480)的地方,您可以使用P.index

在 >= 0.15.0/master 中(2014 年 10 月上旬推出)

In [5]: pd.Timestamp('20130101') + pd.to_timedelta(np.arange(1480),unit='m')
Out[5]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01 00:00:00, ..., 2013-01-02 00:39:00]
Length: 1480, Freq: None, Timezone: None

适用于所有版本

In [4]: pd.DatetimeIndex((pd.Timestamp('20130101') + pd.to_timedelta(np.arange(1480),unit='m')).values)

Out[4]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01 00:00:00, ..., 2013-01-02 00:39:00]
Length: 1480, Freq: None, Timezone: None

出于兴趣,这里是一个 timedelta 重新采样的实际操作:

In [4]: pd.set_option('max_rows',10)

In [5]: df = DataFrame({'A' : np.arange(1480)},index=pd.to_timedelta(np.arange(1480),unit='T'))

In [6]: df
Out[6]:
A
0 days 00:00:00 0
0 days 00:01:00 1
0 days 00:02:00 2
0 days 00:03:00 3
0 days 00:04:00 4
... ...
1 days 00:35:00 1475
1 days 00:36:00 1476
1 days 00:37:00 1477
1 days 00:38:00 1478
1 days 00:39:00 1479

[1480 rows x 1 columns]

In [7]: df.resample('30T',how='sum')
Out[7]:
A
0 days 00:00:00 435
0 days 00:30:00 1335
0 days 01:00:00 2235
0 days 01:30:00 3135
0 days 02:00:00 4035
... ...
0 days 22:30:00 40935
0 days 23:00:00 41835
0 days 23:30:00 42735
1 days 00:00:00 43635
1 days 00:30:00 14745

[50 rows x 1 columns]

关于python - Pandas 将分钟数字索引(0 到 1440)转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com