[英]calculation using shift and groupby
我想计算一个新列“更改”。
新列的值应计算如下:
X / Z(上面的一个单元格)->第一行将为空。
--> 第二行是 1 / 6 = 0,16
-> 第二行将是 5 / 10 = 0,5...等等..
df = pd.DataFrame({'id': ['a', 'a', 'a', 'b', 'b','b'],
'Z': [6,10,8, 6, 6,15],
'X': [2,1,5, 2, 3,20]})
var = df.columns[1]
在论坛里我发现了这个:
df['change'] = df['X'] / df[var].shift(1)
它工作正常。 但是我需要插入一个“groupby”参数并且不能让它工作。 我试过这个:
df['change'] = df.groupby('id').apply(lambda x: x['X'] / x[var].shift(1))
但我收到一个错误:
“插入列的索引与框架索引不兼容”
这个lambda function恐怕我还没有完全理解。 任何想法如何做到这一点? 提前致谢!
您可以将X
列除以移位组:
df["change"] = df["X"] / df.groupby("id")["Z"].shift(1)
print(df)
印刷:
id Z X change
0 a 6 2 NaN
1 a 10 1 0.166667
2 a 8 5 0.500000
3 b 6 2 NaN
4 b 6 3 0.500000
5 b 15 20 3.333333
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.