【问题标题】:How to add a calculated column in a pandas dataframe?如何在熊猫数据框中添加计算列?
【发布时间】:2020-05-14 14:53:30
【问题描述】:

我是 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

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

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    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
    

    【讨论】:

    • 你好!谢谢您的回答。在这种情况下是否可以添加一个包含计算值的列?鉴于我在同一日期拥有多个城市的数据
    • 因为pct_change()应用于提取结果,如果有多个城市,则需要对每个城市进行处理。
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2012-09-04
    • 2015-01-28
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多