a = df.sort([‘B’,’A’],升序= [真,假])
#This is my df
A,B
a,2
b,3
c,4
d,5
d,6
d,7
d,9
然后,当列A相同时,我想计算B列中每个元素之间的差异.但是,如果列A仅包含单个数据点,则结果将为零.
所以我首先使用groupby()来做到这一点.
b = a [‘B’].groupby(df [‘A’]))
然后我卡在这里,我知道我可以使用lambda x:abs(x [i] – x [i 1])或甚至apply()函数来完成计算.但我仍然没有完成它.
# What I want to see in the result
A,B
a,0
b,0
c,0
d,0 # 5 minus 5
d,1 # 6 minus 5
d,1 # 7 minus 6
d,2 # 9 minus 7
解决方法:
在1成员和多成员组的情况下,取diff将产生第一个值的nan,我们可以用0填充:
>>> df["B"] = df.groupby("A")["B"].diff().fillna(0)
>>> df
A B
0 a 0
1 b 0
2 c 0
3 d 0
4 d 1
5 d 1
6 d 2
这假设您没有想要保留的NaN.如果我们需要,我们仍然可以做到这一点.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。