如何在熊猫数据框中添加计算列?

时间:2020-05-13 13:24:10

标签: python pandas

我是python / pandas的新手,所以我在这里有些挣扎。 我有一个包含2016年至2020年空气质量数据的数据框。我想计算每个测量值的年变化率,以将它们与同一天和同一天的前一年的值进行比较。

这些是数据框的第一行。

         Date Country       City Specie count   min   max median variance
0  2020-02-23      CR  San José   pm25    20  13.0  53.0   25.0  1232.00
1  2020-04-04      CR  San José   pm25    23  17.0  57.0   38.0  1302.57
2  2020-04-24      CR  San José   pm25    23  30.0  80.0   59.0  1966.13
3  2020-01-14      CR  San José   pm25    24  13.0  34.0   21.0   379.55
4  2020-02-07      CR  San José   pm25    23  57.0  95.0   72.0   838.97

有人知道我该如何进行吗?

谢谢

1 个答案:

答案 0 :(得分:0)

pandas.DataFrame.pct_change您可以使用'pandas:pct_change'方法轻松地检索它。

data='''
Date Country City Specie count min max median variance
0 2020-02-23 CR SanJos pm25 20 13.0 53.0 25.0 1232.00
1 2020-04-04 CR SanJos pm25 23 17.0 57.0 38.0 1302.57
2 2020-04-24 CR SanJos pm25 23 30.0 80.0 59.0 1966.13
3 2020-01-14 CR SanJos pm25 24 13.0 34.0 21.0 379.55
4 2020-02-07 CR SanJos pm25 23 57.0 95.0 72.0 838.97
5 2019-04-24 CR SanJos pm25 23 29.0 80.0 59.0 1966.13
6 2018-04-24 CR SanJos pm25 23 28.0 80.0 59.0 1966.13
7 2017-04-24 CR SanJos pm25 23 27.0 80.0 59.0 1966.13
8 2016-04-24 CR SanJos pm25 23 26.0 80.0 59.0 1966.13
'''
import pandas as pd
import datetime
import io

df = pd.read_csv(io.StringIO(data), sep=' ', parse_dates=[0], index_col=0)
df = pd.read_csv(io.StringIO(data), sep=' ', parse_dates=[0], index_col=0)
df1 = df[(df['Date'].dt.month == 4) & (df['Date'].dt.day == 24)]

df1
Date    Country City    Specie  count   min max median  variance
2   2020-04-24  CR  SanJos  pm25    23  30.0    80.0    59.0    1966.13
5   2019-04-24  CR  SanJos  pm25    23  29.0    80.0    59.0    1966.13
6   2018-04-24  CR  SanJos  pm25    23  28.0    80.0    59.0    1966.13
7   2017-04-24  CR  SanJos  pm25    23  27.0    80.0    59.0    1966.13
8   2016-04-24  CR  SanJos  pm25    23  26.0    80.0    59.0    1966.13

df1['min'].pct_change()
2         NaN
5   -0.033333
6   -0.034483
7   -0.035714
8   -0.037037
Name: min, dtype: float64