Я хочу найти pct_change Dew_P Temp (C)
от начального значения -3.9. Я хочу pct_change в новом столбце.Pandas pct change from initial value
Источник здесь:
weather = pd.read_csv('https://raw.githubusercontent.com/jvns/pandas-cookbook/master/data/weather_2012.csv')
weather[weather.columns[:4]].head()
Date/Time Temp (C) Dew_P Temp (C) Rel Hum (%)
0 2012-01-01 -1.8 -3.9 86
1 2012-01-01 -1.8 -3.7 87
2 2012-01-01 -1.8 -3.4 89
3 2012-01-01 -1.5 -3.2 88
4 2012-01-01 -1.5 -3.3 88
Я попытался вариации этого для цикла (даже доходя до добавления индекса, показанный здесь), но безрезультатно:
for index, dew_point in weather['Dew_P Temp (C)'].iteritems():
new = weather['Dew_P Temp (C)'][index]
old = weather['Dew_P Temp (C)'][0]
pct_diff = (new-old)/old*100
weather['pct_diff'] = pct_diff
Я думаю, что проблема является weather['pct_diff']
, он не принимает new
, он принимает последнее значение кадра данных и вычитает его из old
Таким образом, его (2.1-3.9) /3.9*100, таким образом, мое процентное изменение всегда -46%.
Конечный результат я хочу это:
Date/Time Temp (C) Dew_P Temp (C) Rel Hum (%) pct_diff
0 2012-01-01 -1.8 -3.9 86 0.00%
1 2012-01-01 -1.8 -3.7 87 5.12%
2 2012-01-01 -1.8 -3.4 89 12.82%
Любые идеи? Благодаря!
ИМО, ваше решение гораздо лучше! – MaxU
Это действительно изящное решение ... Мне интересно, есть ли для этого почему-то с циклом for, потому что это имеет для меня большую ценность. – dyao
Я согласен, это наиболее succint – piRSquared