gpt4 book ai didi

python - 在 groupby 之后更改 pandas DataFrame 的列名,标题中有重复的名称

转载 作者:行者123 更新时间:2023-11-28 22:15:34 25 4
gpt4 key购买 nike

我有一个包含两列时间戳(日期类型)和值的数据框。我想按年和小时汇总,value 是平均值。

df.groupby([df["TimeStamp"].dt.year,df["TimeStamp"].dt.hour]).mean()

结果是:

                       Value
TimeStamp TimeStamp
2014 0 4643.733325
1 4278.877103
...

我想扁平化标题并将该列重命名为年、小时、值。但是我不能使用 .reset_index() 因为名称 TimeStamp 是重复的。我试着用

df.groupby([df["TimeStamp"].dt.year,df["TimeStamp"].dt.hour],as_index=False).mean().reset_index()

但 TimeStamp 列丢失了所有值

        index      Value
0 0 4643.733325
1 1 4278.877103
...

我怎样才能拥有

Year   Hour   Value
2014 1 4643.7
2 4278.8

最佳答案

使用重命名:

rng = pd.to_datetime(['2014-04-03', '2014-04-03 01:01:00', '2014-05-03'])
df = pd.DataFrame({'TimeStamp': rng, 'value': range(3)})
print (df)
TimeStamp value
0 2014-04-03 00:00:00 0
1 2014-04-03 01:01:00 1
2 2014-05-03 00:00:00 2

s = df.groupby([df["TimeStamp"].dt.year.rename('Year'),
df["TimeStamp"].dt.hour.rename('Hour')]).mean()
print (s)
value
Year Hour
2014 0 1
1 1

或通过 rename_axis 设置 MultiIndex 名称:

s = df.groupby([df["TimeStamp"].dt.year,
df["TimeStamp"].dt.hour]).mean()

s = s.rename_axis(['Year','Hour'])
#another solution
#s.index.names = ['Year','Hour']
print (s)
value
Year Hour
2014 0 1
1 1

关于python - 在 groupby 之后更改 pandas DataFrame 的列名,标题中有重复的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52776184/

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