gpt4 book ai didi

python - 将两个多级索引组合成 Pandas 中的单个日期时间戳

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:13 24 4
gpt4 key购买 nike

我有以下具有多级索引的数据框。这里第一个索引是一年中的日期,第二个索引是半小时时间。

Date             
2010-07-01 00:00 1.250
00:30 1.244
01:00 1.256
01:30 0.744
02:00 0.019
02:30 1.250
03:00 0.069
03:30 0.000
04:00 0.000

我想将两个索引组合成一个时间戳,如下所示:

Date             
2010-07-01 00:00 1.250
2010-07-01 00:30 1.244
2010-07-01 01:00 1.256
2010-07-01 01:30 0.744
2010-07-01 02:00 0.019
2010-07-01 02:30 1.250
2010-07-01 03:00 0.069
2010-07-01 03:30 0.000
2010-07-01 04:00 0.000

我尝试了以下代码:

import datetime as dt

dat=df1.index.get_level_values(0)[0]
stamp=df1.index.get_level_values(1)[0]

indx=[dt.datetime(dat,stamp) for dat,stamp in zip(*[df.index.get_level_values(i) for i in (0, 1)])]

但是我收到以下错误:

TypeError: an integer is required (got type Timestamp)

有没有简单的方法来做到这一点?

提前致谢!

最佳答案

使用to_timedelta用于转换时间字符串:

dat=df1.index.get_level_values(0)
stamp=df1.index.get_level_values(1)
df1.index = dat + pd.to_timedelta(stamp + ':00')
print (df1.index)
DatetimeIndex(['2010-07-01 00:00:00', '2010-07-01 00:30:00',
'2010-07-01 01:00:00', '2010-07-01 01:30:00',
'2010-07-01 02:00:00', '2010-07-01 02:30:00',
'2010-07-01 03:00:00', '2010-07-01 03:30:00',
'2010-07-01 04:00:00'],
dtype='datetime64[ns]', freq='30T')

另一种使用 map 的解决方案:

df1.index = pd.to_datetime(df1.index.map(lambda x: '{} {}'.format(x[0], x[1])))
print (df1.index)
DatetimeIndex(['2010-07-01 00:00:00', '2010-07-01 00:30:00',
'2010-07-01 01:00:00', '2010-07-01 01:30:00',
'2010-07-01 02:00:00', '2010-07-01 02:30:00',
'2010-07-01 03:00:00', '2010-07-01 03:30:00',
'2010-07-01 04:00:00'],
dtype='datetime64[ns]', freq=None)

关于python - 将两个多级索引组合成 Pandas 中的单个日期时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080547/

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