gpt4 book ai didi

python - 如何组合两个具有不同类型索引的数据帧(一个是DatetimeIndex,另一个是PeriodIndex)?

转载 作者:行者123 更新时间:2023-12-01 08:16:58 24 4
gpt4 key购买 nike

当 pd.concat 两个具有不同类型索引(一个是 DatetimeIndex,另一个是 periodIndex)的 dfs 时,我遇到了错误。

df1.index:

DatetimeIndex(['2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07'...],
dtype='datetime64[ns]', length=2022, freq=None)

df2.index:

PeriodIndex(['2010-01-01', '2010-01-04', '2010-01-05', '2010-01-06',
'2010-01-07'...],
dtype='period[B]', name='Date', length=2304, freq='B')

错误消息:

 'Index' object has no attribute 'freq'

self 尝试:

修改 df1.index 中的 freq='B' 或从 df2.index 中删除 freq 时不起作用

最佳答案

两者都需要相同的类型,因此需要 DatetimeIndex.to_periodPeriodIndex.to_timestamp :

d = pd.DatetimeIndex(['2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07'])

p = pd.PeriodIndex(['2010-01-01', '2010-01-04', '2010-01-05', '2010-01-06',
'2010-01-07'], dtype='period[B]', name='Date', freq='B')

df1 = pd.DataFrame({'a':0}, index=d)
df2 = pd.DataFrame({'b':1}, index=p)

#if need output PeriodIndex
df1.index = df1.index.to_period('B')
df = pd.concat([df1, df2], axis=1)
print (df)

a b
2010-01-01 NaN 1
2010-01-04 0.0 1
2010-01-05 0.0 1
2010-01-06 0.0 1
2010-01-07 0.0 1
<小时/>
#if need output DatetimeIndex
df2.index = df2.index.to_timestamp()
df = pd.concat([df1, df2], axis=1)
print (df)

a b
2010-01-01 NaN 1
2010-01-04 0.0 1
2010-01-05 0.0 1
2010-01-06 0.0 1
2010-01-07 0.0 1

关于python - 如何组合两个具有不同类型索引的数据帧(一个是DatetimeIndex,另一个是PeriodIndex)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54925761/

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