熊猫pct从初始值变化

dya*_*yao 5 python dataframe python-3.x pandas

我想Dew_P Temp (C)从初始值-3.9 找到pct_change .我想在新专栏中使用p​​ct_change.

来源:

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
Run Code Online (Sandbox Code Playgroud)

我已尝试过for循环的变体(甚至可以添加此处显示的索引),但无济于事:

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
Run Code Online (Sandbox Code Playgroud)

我认为问题是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%  
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Ale*_*der 8

您可以使用iat访问标量值(例如iat[0]访问系列中的第一个值).

df = weather
df['pct_diff'] = df['Dew_P Temp (C)'] / df['Dew_P Temp (C)'].iat[0] - 1
Run Code Online (Sandbox Code Playgroud)