Skip to main content
 首页 » 编程设计

python之如何获得 Pandas 表中的最小增量

2025年05月04日22yjmyzz

我试图在我的表中的一列中获得行与行之间的最小增量。

到目前为止我的尝试

import pandas as pd 
 
df = pd.DataFrame({'A': [0, 100, 50, 100], 
                   'B': [5, 2, 2, 0], 
                   'C': [10, 20, 40, 400]}) 
 
def lowestIncrease(data, value): 
  table = data[value].pct_change().fillna(0) 
  x = data[value][table == table.min(i for i in table if i > 0)].index[0] 
  if x == 0: 
    print( 0 ) 
  else: 
    answer = data[value][x] - data[value][x-1] 
    print( answer ) 

我使用 min() 的想法来自这里 https://stackoverflow.com/a/27966830/8705615

我想要的输出

in[1]:lowestIncrease(df, 'A') 
out[1]:50 
in[2]:lowestIncrease(df, 'B') 
out[2]:0 
in[3]:lowestIncrease(df, 'C') 
out[3]:10 

我觉得我已经接近我想要实现的目标了,我只需要替换我的调用方式 table.min(i for i in table if i > 0)得到我想要的输出。如何在表格中获得高于 0 的最低值变化?

请您参考如下方法:

输入:

df = pd.DataFrame({'A': [0, 100, 50, 100], 
                   'B': [5, 2, 2, 0], 
                   'C': [10, 20, 40, 400]}) 

解决方法:

df.diff()[df.diff() >0].min().fillna(0) 

输出

A    50.0 
B     0.0 
C    10.0 

对于单列

d = df[['A']] 
d.diff()[d.diff() >0].min().fillna(0) 

输出

A    50.0