как получить минимальное увеличение стола панд? - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь получить минимальное увеличение между строками в столбце в моей таблице.

моя попытка до сих пор

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 в таблице?

1 Ответ

0 голосов
/ 24 августа 2018

Входы:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...