Python 分组后数据帧的更改率
我是python pandas的新手,一直在尝试使用pct_change()获取回报率。我想通过feedcode获得每月的变化率。 这是我当前的代码:Python 分组后数据帧的更改率,python,pandas,Python,Pandas,我是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
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
我有两个问题:
Output:
Close Rate_Return
Feed Date
A 2015-10-30 5.75 0.026786
AAV 2015-10-30 4.32 0.069444
这样做的最佳方式是什么?
提前感谢您提供的任何帮助IIUC您需要groupby
从multiindex订阅并应用。然后您可以使用df3
的子集,其中列Rate\u Return
为notnull
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
如果有一个原始数据集的样本可以使用,那就太好了,谢谢。@jezrael pct_change()适用于当前/上一个,您将如何在同一帧中对上一个/当前使用它?嗯,也许您可以通过df=df[::-1]
更改列的顺序,应用pct_change
并最后返回原始打印df.sort_index()