从pandas DataFrame

时间:2017-04-11 15:44:58

标签: python pandas dataframe

我想从正上方的值中减去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

我如何在pandas中做同样的事情?更一般地说,如何在满足特定条件的pandas DataFrame中提取行号?

1 个答案:

答案 0 :(得分:2)

您可以使用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