Python 从数据帧中的上一个值减去最小值
我想从数据帧上的值减去数据帧中某列的最小值。在Python 从数据帧中的上一个值减去最小值,python,pandas,dataframe,Python,Pandas,Dataframe,我想从数据帧上的值减去数据帧中某列的最小值。在R中,我会这样做: df <- data.frame(a=1:5, b=c(5,6,7,4,9)) df a b 1 1 5 2 2 6 3 3 7 4 4 4 5 5 9 df$b[which.min(df$b)-1] - df$b[which.min(df$b)] [1] 3 df您可以使用argmin找出最小值的索引(如果有联系,则为第一个),然后您可以根据位置进行减法: index = df.b.argmin() df.b[ind
R
中,我会这样做:
df <- data.frame(a=1:5, b=c(5,6,7,4,9))
df
a b
1 1 5
2 2 6
3 3 7
4 4 4
5 5 9
df$b[which.min(df$b)-1] - df$b[which.min(df$b)]
[1] 3
df您可以使用argmin
找出最小值的索引(如果有联系,则为第一个),然后您可以根据位置进行减法:
index = df.b.argmin()
df.b[index-1] - df.b[index]
# 3
如果索引不是连续的数字:
i_index = df.b.values.argmin()
df.b.iat[i_index-1] - df.b.iat[i_index]
# 3
或效率较低:
-df.b.diff()[df.b.argmin()]
# 3.0
您可以使用argmin
找出最小值的索引(如果有联系,则为第一个),然后可以根据位置进行减法:
index = df.b.argmin()
df.b[index-1] - df.b[index]
# 3
如果索引不是连续的数字:
i_index = df.b.values.argmin()
df.b.iat[i_index-1] - df.b.iat[i_index]
# 3
或效率较低:
-df.b.diff()[df.b.argmin()]
# 3.0
您还可以使用pandas.DataFrame.idxmin()
知道哪一个更好吗?@charlesmoris Right。这不是一个正式的答案,但我不认为idxmin
和argmin
性能方面有很大的区别。@charlesmorisargmin
是一种专门的索引
方法,idxmin
可用于系列
,DataFrame
s和groupby
objects@EdChum这是否意味着idxmin
更通用,或者只是有不同的用例?实现相同结果的方法不同,在索引
对象上有idxmin
可能听起来很奇怪,因为它可能会与min
相混淆,相反,在系列
上的argmin
可能会与min
相混淆,而idxmin
应该更容易理解。另外,idxmin
具有skipna
arg,argmin
由于某些原因不能使用。您也可以使用pandas.DataFrame.idxmin()
知道哪一个更好吗?@charlesmoris Right。这不是一个正式的答案,但我不认为idxmin
和argmin
性能方面有很大的区别。@charlesmorisargmin
是一种专门的索引
方法,idxmin
可用于系列
,DataFrame
s和groupby
objects@EdChum这是否意味着idxmin
更通用,或者只是有不同的用例?实现相同结果的方法不同,在索引
对象上有idxmin
可能听起来很奇怪,因为它可能会与min
相混淆,相反,在系列
上的argmin
可能会与min
相混淆,而idxmin
应该更容易理解。另外,idxmin
具有skipna
arg,argmin
由于某种原因没有