gpt4 book ai didi

python - 分组后 Pandas Data Frame 的变化率

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

我是 python pandas 的新手,一直在尝试使用 pct_change() 获得返回率。我想通过 feedcode 获得月度变化率。这是我当前的代码:

In [134]:
df3 = pd.read_csv(r'C:\Users\sector_set.csv')
df3.set_index('Date', inplace= True)
df3= pd.DataFrame(df3,columns = ['Feed','Close']) # filter specific col​
grouped = df3.groupby('Feed') #group by Feedcode
df3 = grouped.resample('BM', how=lambda x:x[-1]) #ending of every month only
df3['Rate_Return'] = df3.pct_change() # Rate of Return of each feedcode
df3

OUTPUT:
Close Rate_Return
Feed Date
A 2015-09-30 5.60 NaN
2015-10-30 5.75 0.026786
AAV 2015-09-30 4.32 -0.248696
2015-10-30 4.62 0.069444

我有两个问题:

  1. 计算的返回率不正确,因为它引用前一天的 feedcode 价格来计算下一个 feed 代码的返回。例如,Feed AAV 2015-09-30 应该是 NaN 而不是 -0.248696

  2. 我想删除所有 NaN

我正在尝试计算返回以获得这样的结果:

Output:
Close Rate_Return
Feed Date
A 2015-10-30 5.75 0.026786
AAV 2015-10-30 4.32 0.069444

这样做的最佳方法是什么?在此先感谢您的帮助

最佳答案

IIUC 你需要通过 multiindex 的 Feed 进行分组并申请 pct_change .然后你可以使用 df3 的子集,其中列 Rate_Returnnotnull

df3['Rate_Return'] = df3.groupby(level=0).pct_change() 
print df3
Close Rate_Return
Feed Date
A 2015-09-30 5.60 NaN
2015-10-30 5.75 0.026786
AAV 2015-09-30 4.32 NaN
2015-10-30 4.62 0.069444

print df3[df3.Rate_Return.notnull()]
Close Rate_Return
Feed Date
A 2015-10-30 5.75 0.026786
AAV 2015-10-30 4.62 0.069444

关于python - 分组后 Pandas Data Frame 的变化率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481456/

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