gpt4 book ai didi

python - Pandas :按索引值分组,然后计算分位数?

转载 作者:太空狗 更新时间:2023-10-29 17:06:35 30 4
gpt4 key购买 nike

我在 month 列上索引了一个 DataFrame(使用 df = df.set_index('month') 设置,以防相关):

             org_code  ratio_cost   
month
2010-08-01 1847 8.685939
2010-08-01 1848 7.883951
2010-08-01 1849 6.798465
2010-08-01 1850 7.352603
2010-09-01 1847 8.778501

我想添加一个名为 quantile 的新列,它将根据该月的 ratio_cost 值为每一行分配一个分位数值。

所以上面的例子可能是这样的:

             org_code  ratio_cost   quantile
month
2010-08-01 1847 8.685939 100
2010-08-01 1848 7.883951 66.6
2010-08-01 1849 6.798465 0
2010-08-01 1850 7.352603 33.3
2010-09-01 1847 8.778501 100

我该怎么做?我试过这个:

df['quantile'] = df.groupby('month')['ratio_cost'].rank(pct=True)

但是我得到 KeyError: 'month'

更新:我可以重现该错误。

这是我的 CSV 文件:http://pastebin.com/raw/6xbjvEL0

这里是重现错误的代码:

df = pd.read_csv('temp.csv')
df.month = pd.to_datetime(df.month, unit='s')
df = df.set_index('month')
df['percentile'] = df.groupby(df.index)['ratio_cost'].rank(pct=True)
print df['percentile']

我在 OSX 上使用 Pandas 0.17.1。

最佳答案

你必须 sort_index之前rank :

import pandas as pd

df = pd.read_csv('http://pastebin.com/raw/6xbjvEL0')

df.month = pd.to_datetime(df.month, unit='s')
df = df.set_index('month')

df = df.sort_index()

df['percentile'] = df.groupby(df.index)['ratio_cost'].rank(pct=True)
print df['percentile'].head()

month
2010-08-01 0.2500
2010-08-01 0.6875
2010-08-01 0.6250
2010-08-01 0.9375
2010-08-01 0.7500
Name: percentile, dtype: float64

关于python - Pandas :按索引值分组,然后计算分位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35060846/

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