为新的混合值迭代两个panda DataFrame行



我有两个panda数据帧,它们具有相同的列名,并且每个数据帧中的数据与不同的产品类型相关。例如,两者看起来像这样,但长度不相等。

df1

Name    ScoreX ScoreY   ScoreZ
Type1   0.6     0.2      0.7
Type2   0.6     0.5      0.6
Type3   0.7     0.2      0.3
Type4   1.0     0.2      0.3

df2

Name    ScoreX ScoreY   ScoreZ
TypeA   0.5     0.1      0.9
TypeB   0.3     0.5      0.6
TypeC   0.7     0.8      0.2
TypeD   1.0     0.2      0.3

我试图创建每种类型的新的混合值,将df1和df2中的每种产品组合在一起,得分值是两种产品的个人得分的平均值。寻找一种迭代两个帧的方法,使df1的第一行与df2中的每一行组合,然后在df1中再次对每一行重复该过程。因此,在一个新的df:中,输出会是这样的

Name        MeanScoreX MeanScoreY MeanScoreZ
Type1_TypeA  0.55       0.15      0.8
Type1_TypeB  0.45       0.35      0.65

Type2_TypeA  0.55       0.3       0.75
Type2_TypeB  0.45       0.5       0.6

重命名df2 的列

df2.columns = ['Name2', 'ScoreX2' , 'ScoreY2', 'ScoreZ2']

连接两个数据帧

df = pd.concat([df1, df2], axis=1)

生成衍生字段

df['Name'] = df['Name'] + df['Name2']
df['MeanScoreX'] = df[['ScoreX', 'ScoreX2']].mean(axis=1)
df['MeanScoreY'] = df[['ScoreY', 'ScoreY2']].mean(axis=1)
df['MeanScoreZ'] = df[['ScoreZ', 'ScoreZ2']].mean(axis=1)

最新更新