gpt4 book ai didi

python - 强制将 DatetimeIndex 与 Pandas 一起使用

转载 作者:行者123 更新时间:2023-12-01 01:18:41 25 4
gpt4 key购买 nike

我有以下 Pandas 数据框:

df.head()

输出

id  unplug_hourDateTime
0 2018-09-01 01:00:00+02:00
1 2018-03-01 01:00:00+02:00
2 2018-03-01 01:00:00+02:00
3 2018-04-01 01:00:00+02:00
4 2018-04-01 01:00:00+02:00

我的目标是建立一个 calmap基于每天记录发生情况的图表,因此我需要一个具有 DatetimeIndex、TimedeltaIndex 或 periodIndex 格式索引的数据框。

我写了以下内容:

df['unplug_Date']=df['unplug_hourDateTime'].map(lambda x : x.date())
df_calmap=df['unplug_Date'].value_counts().to_frame()
df_calmap.head()

输出

               unplug_Date
2018-09-20 16562
2018-09-13 16288
2018-09-19 16288
2018-09-12 16092
2018-09-27 16074

乍一看,它看起来像是我正在寻找的东西,但如果我使用 calmap 包,并且我执行 calmap.calendarplot(df_calmap)我收到一个错误,我认为这是由于索引的格式造成的。

AttributeError: 'Index' object has no attribute 'year'

如何强制数据框使用索引列作为 DatetimeIndex?我找到了this有趣的答案,但我不明白如何使用 df = df.set_index(pd.DatetimeIndex(df['b']))使用已经存在的索引而不是新列。

最佳答案

calmap 文档指出它将默认每天求和,因此您不必将日期时间字段更改为日期字段。只需将 unplug_hourDateTime 列更改为 datetime index如下。我的示例使用方法链接,这意味着一切都可以一次性完成:

df_calmap = (df
.assign(unplug_hourDateTime=pd.DatetimeIndex(df['unplug_hourDateTime']))
.groupby('unplug_hourDateTime')
.size()
.to_frame('count')
)

calmap.calendarplot(df_calmap['count'])

当然,您也可以使用 Josh Friedlander 的精彩答案:

df.index = pd.DateTimeIndex(df.index)

关于python - 强制将 DatetimeIndex 与 Pandas 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54063205/

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