在组边界处重置的数据中按组计算差异

时间:2019-03-24 17:23:20

标签: python-3.x pandas-groupby difference

可以通过groupby在行之间产生diff(),但需要 有效地从0 diff开始下一组。 当前给出与上一组的最后一个的差异。

csvin['gap']=csvin.groupby(['sym','type'])['strike'].fillna(0).diff()

输入
符号,罢工,类型
A,80.00,C
A,82.50,C
A,75.00,P
A,77.50,P
A,80.00,P
AA,25.50,C
AA,26.50,C

输出
符号,罢工,类型,间隙
A,80.0,C,0
A,82.5,C,2.5
A,75.0,P,7.5
A,77.5,P,2.5
A,80.0,P,2.5
AA,25.5,C,54.5
AA,26.5,C,1.0

第三行间隔必须为0,而不是7.5,并且
AA间隙的第一行需要为0,而不是
的差异 最后一组54.5。
尝试过transform和numpy仍然行不通
试过了 Computing diffs within groups of a dataframe 尝试过此代码

csvin.set_index(['key','type']).sort_index()[['strike']]
csvin['gap']=np.nan
idx=pd.IndexSlice
for ix in csvin.index.level[0]:
   csvin.loc[idx[ix,:], 'gap'] = csvin.loc[idx[ix,:],'strike'].diff()

获取错误

AttributeError:“ RangeIndex”对象没有属性“ level”
知道为什么吗?

0 个答案:

没有答案