特定名称的变异性计算 Pandas
Name-Specific Variability Calculations Pandas
我正在尝试根据两个 df 计算可变性统计数据 - 一个包含当前数据,另一个包含当月平均数据。假设我有一个如下所示的 df“DF1”:
Name year month output
0 A 1991 1 10864.8
1 A 1997 2 11168.5
2 B 1994 1 6769.2
3 B 1998 2 3137.91
4 B 2002 3 4965.21
和一个名为“DF2”的 df,其中包含多年的月平均值,例如:
Name month output_average
0 A 1 11785.199
1 A 2 8973.991
2 B 1 8874.113
3 B 2 6132.176667
4 B 3 3018.768
并且,我需要一个新的 DF,将其称为“DF3”,它需要看起来像这样,并针对“名称”列中的变化和每个“月份”的变化进行特定计算:
Name year month Variability
0 A 1991 1 -0.078097875
1 A 1997 2 0.24454103
2 B 1994 1 -0.237197002
3 B 1998 2 -0.488287737
4 B 2002 3 0.644782
我已经尝试过类似下面的选项,但有关于复制轴或键错误的错误 -
DF3['variability'] =
((DF1.output/DF2.set_index('month'['output_average'].reindex(DF1['name']).values)-1)
感谢您帮助学习来自 matlab 的 Python 行计算!
对于两列,你最好使用merge
而不是set_index
:
df3 = df1.merge(df2, on=['Name','month'], how='left')
df3['variability'] = df3['output']/df3['output_average'] - 1
输出:
Name year month output output_average variability
0 A 1991 1 10864.80 11785.199000 -0.078098
1 A 1997 2 11168.50 8973.991000 0.244541
2 B 1994 1 6769.20 8874.113000 -0.237197
3 B 1998 2 3137.91 6132.176667 -0.488288
4 B 2002 3 4965.21 3018.768000 0.644780
我正在尝试根据两个 df 计算可变性统计数据 - 一个包含当前数据,另一个包含当月平均数据。假设我有一个如下所示的 df“DF1”:
Name year month output
0 A 1991 1 10864.8
1 A 1997 2 11168.5
2 B 1994 1 6769.2
3 B 1998 2 3137.91
4 B 2002 3 4965.21
和一个名为“DF2”的 df,其中包含多年的月平均值,例如:
Name month output_average
0 A 1 11785.199
1 A 2 8973.991
2 B 1 8874.113
3 B 2 6132.176667
4 B 3 3018.768
并且,我需要一个新的 DF,将其称为“DF3”,它需要看起来像这样,并针对“名称”列中的变化和每个“月份”的变化进行特定计算:
Name year month Variability
0 A 1991 1 -0.078097875
1 A 1997 2 0.24454103
2 B 1994 1 -0.237197002
3 B 1998 2 -0.488287737
4 B 2002 3 0.644782
我已经尝试过类似下面的选项,但有关于复制轴或键错误的错误 -
DF3['variability'] =
((DF1.output/DF2.set_index('month'['output_average'].reindex(DF1['name']).values)-1)
感谢您帮助学习来自 matlab 的 Python 行计算!
对于两列,你最好使用merge
而不是set_index
:
df3 = df1.merge(df2, on=['Name','month'], how='left')
df3['variability'] = df3['output']/df3['output_average'] - 1
输出:
Name year month output output_average variability
0 A 1991 1 10864.80 11785.199000 -0.078098
1 A 1997 2 11168.50 8973.991000 0.244541
2 B 1994 1 6769.20 8874.113000 -0.237197
3 B 1998 2 3137.91 6132.176667 -0.488288
4 B 2002 3 4965.21 3018.768000 0.644780