gpt4 book ai didi

python - 从 Pandas 数据框计算平均值

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

我有一个以日期时间为索引的数据框。数据仅来自 12 月、1 月和 2 月。我试图计算 12 月、1 月和 2 月的平均值。当我喜欢时:

df.resample('a').mean()

然后它给了我从 1 月 2 月到 12 月的平均值。

在 pandas dataframe 中有没有办法做到这一点?

我的数据看起来像:

2000-02-29    0.046871
2000-03-31 NaN
2000-04-30 NaN
2000-05-31 NaN
2000-06-30 NaN
2000-07-31 NaN
2000-08-31 NaN
2000-09-30 NaN
2000-10-31 NaN
2000-11-30 NaN
2000-12-31 0.015948
2001-01-31 0.020552
2001-02-28 0.033409
2001-03-31 NaN
2001-04-30 NaN
2001-05-31 NaN
2001-06-30 NaN
2001-07-31 NaN
2001-08-31 NaN
2001-09-30 NaN
2001-10-31 NaN
2001-11-30 NaN
2001-12-31 0.013204
2002-01-31 0.017093
2002-02-28 0.019723
2002-03-31 NaN
2002-04-30 NaN

最佳答案

你需要groupbystrftime :

df = df.groupby(df.index.strftime('%b')).mean()
print (df)
col
Dec 0.014576
Feb 0.033334
Jan 0.018822

如果还要年:

df = df.groupby(df.index.strftime('%Y-%b')).mean()
print (df)
col
2000-Dec 0.015948
2000-Feb 0.046871
2001-Dec 0.013204
2001-Feb 0.033409
2001-Jan 0.020552
2002-Feb 0.019723
2002-Jan 0.017093

另一种解决方案是转换为 to_period :

df = df.groupby(df.index.to_period('m')).mean()
print (df)
col
2000-02 0.046871
2000-12 0.015948
2001-01 0.020552
2001-02 0.033409
2001-12 0.013204
2002-01 0.017093
2002-02 0.019723

编辑:

因为 December 需要换一个月,然后按 year 分组:

year = df.shift(freq='m').index.year
print (year)
Int64Index([2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2001,
2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
2002, 2002, 2002, 2002, 2002],
dtype='int64')


df = df.groupby(year).mean()
print (df)
col
2000 0.046871
2001 0.023303
2002 0.016673

关于python - 从 Pandas 数据框计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115310/

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