我试图在Python中从R复制this结果。我想要应用的函数(np.diff)接受一个输入并返回一个大小相同的数组。当我尝试分组时,我得到的输出是组数的大小,而不是行数的大小
数据帧示例:
df = pd.DataFrame({'sample':[1,1,1,1,1,2,2,2,2,2],'value':[1,2,3,4,5,1,3,2,4,3]})
如果我对它应用diff,我会接近我想要的结果,除了组边界。(-4)值是一个问题
x = np.diff([df.loc[:,'value']], 1, prepend=0)[0]
df.loc[:,'delta'] = x
sample value delta
0 1 1 1
1 1 2 1
2 1 3 1
3 1 4 1
4 1 5 1
5 2 1 -4
6 2 3 2
7 2 2 -1
8 2 4 2
9 2 3 -1
我认为答案是使用groupby
和apply
或transform
,但我无法理解语法。我能得到的最接近的结果是:
df.groupby('sample').apply(lambda df: np.diff(df['value'], 1, prepend =0 ))
x
1 [1, 1, 1, 1, 1]
2 [1, 2, -1, 2, -1]
这里可以使用^{} ,将第一个缺少的值替换为
1
,然后将值替换为整数:您的解决方案可以通过^{} 进行更改,在
groupby
之后指定处理列,并在lambda函数中删除y
列:相关问题 更多 >
编程相关推荐