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
根据下面 '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