Pandas 将 DF 列唯一行除以不同的 DF 唯一均值

Pandas Dividing DF Column Unique Rows by Different DF Unique Mean

根据下面 'A' 和 'B' 的列数据值的平均值,我一直在尝试创建一个可变性列。我不明白如何通过具有长期平均值的单个数据值为熊猫列中的每一行或逐元素创建平均值。例如,假设在 pandas df1:

中有这样的数据
Year     Name   Data
1999     A      2
2000     A      4
1999     B      6
2000     B      8

而且,我有一个称为“LTmean”的长期均值的 DF,在本例中为 = 3 和 7。

mean_df = 
Name    Data mean
0   A          3
1   B          7

因此,对于新的 df,结果将如下所示:dfnew['var'] = (df1.['Data']/mean_df(???) -1 :

Year   Name   Var
1999    A     -0.3
2000    A      0.3
1999    B     -0.14
2000    B      0.14

感谢您对此提出任何建议!使用 A、B 的唯一 mean_df 值以某种方式通过每个 DF 中的“名称”遍历每一列,循环是否是最好的主意?

使用groupby().transform将结果传播到原始索引:

df['Var'] = df['Data']/df.groupby(['Name'])['Data'].transform('mean') - 1

输出:

   Year Name  Data       Var
0  1999    A     2 -0.333333
1  2000    A     4  0.333333
2  1999    B     6 -0.142857
3  2000    B     8  0.142857