【问题标题】:Creating a calculated field based on row values provided column values match如果列值匹配,则根据行值创建计算字段
【发布时间】:2022-02-02 05:30:46
【问题描述】:

我有一个pandas dataframe,美国各州的温度数据首先按分组,然后按年份分组。我已经通过子集原始数据框选择了第一年和最后几年的条目。我想创建一个新的dataframe,显示所有 50 个州的第一年(1995 年)和去年(2019 年)的 AvgTemperature 差异。

State Year AvgTemperature
Alabama 1995 63.66
Alabama 2019 66.32
Alaska 1995 35.97
... ... ...

我想要一个可以绘制的结果,以显示随着时间的推移哪些状态变化最大,最好以 State 作为第 1 列和 Temperature_Change 的格式作为第 2 列。

【问题讨论】:

    标签: python pandas numpy matplotlib


    【解决方案1】:

    您可以pivot,计算diff 并绘制为条形:

    (df.pivot('State', 'Year', 'AvgTemperature')
       .diff(axis=1)
       .iloc[:,-1]
       .rename('diff')
       .plot.bar()
     )
    

    注意。我在 2019 年使用了阿拉斯加的虚拟数据。

    输出:

    【讨论】:

    • 这不仅有效,而且是一种比我寻求帮助的更好的数据可视化方式……非常感谢!
    【解决方案2】:

    试试这个:

    df.sort_values(['State', 'Year']).groupby('State').apply(lambda g: g.iloc[-1]['AvgTemperature'] - g.iloc[0]['AvgTemperature'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多