gpt4 book ai didi

python - Pandas :groupby并按月获得中值?

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:47 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

     org        date     value
0 00C 2013-04-01 0.092535
1 00D 2013-04-01 0.114941
2 00F 2013-04-01 0.102794
3 00G 2013-04-01 0.099421
4 00H 2013-04-01 0.114983

现在我想弄清楚:

  • 每个组织在一年中每个月的中值
  • 每个组织的 X,其中 X 是最低月度中值与最高中值之间的百分比差异。

在 Pandas 中解决这个问题的最佳方法是什么?

我尝试按如下方式按月生成中位数,但失败了:

df['date'] = pd.to_datetime(df['date'])
ave = df.groupby(['row_id', 'date.month']).median()

失败并返回 KeyError: 'date.month'

更新:感谢@EdChum,我现在正在做:

ave = df.groupby([df['row_id'], df['date'].dt.month]).median()

效果很好,给了我:

99P    1     0.106975
2 0.091344
3 0.098958
4 0.092400
5 0.087996
6 0.081632
7 0.083592
8 0.075258
9 0.080393
10 0.089634
11 0.085679
12 0.108039
99Q 1 0.110889
2 0.094837
3 0.100658
4 0.091641
5 0.088971
6 0.083329
7 0.086465
8 0.078368
9 0.082947
10 0.090943
11 0.086343
12 0.109408

现在我想,对于索引中的每个项目,我需要找到最小和最大计算值,然后是它们之间的差值。最好的方法是什么?

最佳答案

对于您的第一个错误,您有一个语法错误,您可以传递列名列表或列本身,您传递了一个名称列表并且 date.month 不存在,所以您想要:

ave = df.groupby([df['row_id'], df['date'].dt.month]).median()

之后,您可以计算特定索引级别的minmax,因此:

((ave.max(level=0) - ave.min(level=0))/ave.max(level=0)) * 100

应该给你你想要的。

这会计算每个组织的最小值和最大值之间的差值,除以该级别的最大值,然后乘以 100 得出百分比

关于python - Pandas :groupby并按月获得中值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35361975/

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