Pandas 按行计算月变化
Pandas Calculate Monthly Variability by Row
我正在尝试创建一个具有月度偏差(可变性)的熊猫 df,该 df 具有一组年份(1991-1993)的月度(1 月 - 12 月)平均值。我有一个 df - "data" - 这是一个 4 x 13,看起来像这样,第一列 "year" 然后是月份数据,即“01”是 Jan,等等
month year 01 02 03 04 05 06 07 08 09 10 11 12
year
0 1991 2 6 9 11 3 5 8 9 0 10 12 7
1 1992 3 4 1 17 5 8 9 1 2 18 19 3
2 1993 6 6 2 10 5 3 8 3 4 17 20 4
我有一个带有每月平均值的 df 让我们调用 "monthly_averages",它看起来像这样:
month 01 02 03 04 05 06 07 08 09 10 11 12
0 3 4 5 13 4 6 8 5 2 13 14 5
我的结果应该是一个有 4 行和 13 列的 df,以便显示每年(1991、1992、1993)的偏差,其中年份列 + 每个月的列。我找到的最佳解决方案如下所示,但它只给我第一行的偏差,第一列与 NaN 其余值:(data.div(monthly_averages[['01 ']], 轴=0))-1
预先感谢您的见解。
如果我对你的描述理解正确,你可以试试这个
df_final = (data.div(monthly_averages.loc[0], axis=1) - 1).fillna(data)
Out[234]:
01 02 03 04 05 06 07 08 09 10 \
0 -0.333333 0.5 0.8 -0.153846 -0.25 -0.166667 0.000 0.8 -1.0 -0.230769
1 0.000000 0.0 -0.8 0.307692 0.25 0.333333 0.125 -0.8 0.0 0.384615
2 1.000000 0.5 -0.6 -0.230769 0.25 -0.500000 0.000 -0.4 1.0 0.307692
11 12 year
0 -0.142857 0.4 1991.0
1 0.357143 -0.4 1992.0
2 0.428571 -0.2 1993.0
我正在尝试创建一个具有月度偏差(可变性)的熊猫 df,该 df 具有一组年份(1991-1993)的月度(1 月 - 12 月)平均值。我有一个 df - "data" - 这是一个 4 x 13,看起来像这样,第一列 "year" 然后是月份数据,即“01”是 Jan,等等
month year 01 02 03 04 05 06 07 08 09 10 11 12
year
0 1991 2 6 9 11 3 5 8 9 0 10 12 7
1 1992 3 4 1 17 5 8 9 1 2 18 19 3
2 1993 6 6 2 10 5 3 8 3 4 17 20 4
我有一个带有每月平均值的 df 让我们调用 "monthly_averages",它看起来像这样:
month 01 02 03 04 05 06 07 08 09 10 11 12
0 3 4 5 13 4 6 8 5 2 13 14 5
我的结果应该是一个有 4 行和 13 列的 df,以便显示每年(1991、1992、1993)的偏差,其中年份列 + 每个月的列。我找到的最佳解决方案如下所示,但它只给我第一行的偏差,第一列与 NaN 其余值:(data.div(monthly_averages[['01 ']], 轴=0))-1 预先感谢您的见解。
如果我对你的描述理解正确,你可以试试这个
df_final = (data.div(monthly_averages.loc[0], axis=1) - 1).fillna(data)
Out[234]:
01 02 03 04 05 06 07 08 09 10 \
0 -0.333333 0.5 0.8 -0.153846 -0.25 -0.166667 0.000 0.8 -1.0 -0.230769
1 0.000000 0.0 -0.8 0.307692 0.25 0.333333 0.125 -0.8 0.0 0.384615
2 1.000000 0.5 -0.6 -0.230769 0.25 -0.500000 0.000 -0.4 1.0 0.307692
11 12 year
0 -0.142857 0.4 1991.0
1 0.357143 -0.4 1992.0
2 0.428571 -0.2 1993.0