如果列值匹配,则根据行值创建计算字段

Creating a calculated field based on row values provided column values match

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

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

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

试试这个:

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

您可以 pivot,计算 diff 并绘制为柱状图:

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

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

输出: