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
性能方面有很大的区别。@charlesmoris
argmin
是一种专门的
索引
方法,
idxmin
可用于
系列
DataFrame
s和
groupby
objects@EdChum这是否意味着
idxmin
更通用,或者只是有不同的用例?实现相同结果的方法不同,在
索引
对象上有
idxmin
可能听起来很奇怪,因为它可能会与
min
相混淆,相反,在
系列
上的
argmin
可能会与
min
相混淆,而
idxmin
应该更容易理解。另外,
idxmin
具有
skipna
arg,
argmin
由于某些原因不能使用。您也可以使用
pandas.DataFrame.idxmin()
知道哪一个更好吗?@charlesmoris Right。这不是一个正式的答案,但我不认为
idxmin
argmin
性能方面有很大的区别。@charlesmoris
argmin
是一种专门的
索引
方法,
idxmin
可用于
系列
DataFrame
s和
groupby
objects@EdChum这是否意味着
idxmin
更通用,或者只是有不同的用例?实现相同结果的方法不同,在
索引
对象上有
idxmin
可能听起来很奇怪,因为它可能会与
min
相混淆,相反,在
系列
上的
argmin
可能会与
min
相混淆,而
idxmin
应该更容易理解。另外,
idxmin
具有
skipna
arg,
argmin
由于某种原因没有