Расчет скорости в фрейме данных - PullRequest
1 голос
/ 25 апреля 2020

У меня есть DataFrame, как показано ниже:

 df = pd.DataFrame({ 
        'Code':['ABC','DEF','GHI','JKL','MNO'],       
        'Val': [1000, 2000, 5000,7000, 8000]})
    #df['Diff rate'] = df.Val.diff()
    df

Я хочу ввести новый столбец 'Diff Rate', который имеет разницу между (текущий Val -Previous Val) / Current Val. Как я могу go об этом? Ожидаемые значения: NaN,0.5,0.6,0.2857,0.125 в столбце Diff Rate Спасибо

Ответы [ 3 ]

3 голосов
/ 25 апреля 2020

Использование:

df['Diff rate'] = df["Val"].diff() / df["Val"]
print(df)

Печать:

  Code   Val  Diff rate
0  ABC  1000        NaN
1  DEF  2000   0.500000
2  GHI  5000   0.600000
3  JKL  7000   0.285714
4  MNO  8000   0.125000
1 голос
/ 25 апреля 2020

Вы можете использовать shift, чтобы указать количество периодов, из которых вы хотите, чтобы разница была:

df['Diff rate'] = (df['Val']- df['Val'].shift(periods=1))/df['Val']

результат:

  Code   Val  Diff rate
0  ABC  1000        NaN
1  DEF  2000   0.500000
2  GHI  5000   0.600000
3  JKL  7000   0.285714
4  MNO  8000   0.125000
0 голосов
/ 25 апреля 2020

Вы можете попробовать это:

val = df['Val'].tolist()

diff = [None]

for i in range(1, len(val)):
    diff.append((val[i]-val[i-1])/val[i])

Выход будет

[None, 0.5, 0.6, 0.2857142857142857, 0.125]
df['diff_rate'] = diff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...