gpt4 book ai didi

python - 如果其他两个列字符串匹配,如何将一列的平均值复制到另一列?

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:57 25 4
gpt4 key购买 nike

我想重新排列数据框中的名称(如下所示),但保留其平均分数。所以我知道我可以执行以下操作来获取每个人的值列表:

df1.groupby('Person1')['AverageScoreP1'].mean()
df1.groupby('Person2')['AverageScoreP2'].mean()

但是我怎样才能以正确的顺序将它们放入新的数据帧(df2)中。我使用了“转换”方法,但没有将名称及其平均分数作为一个实体附加。相反,它只是以相同的顺序将值从 df1 复制到 df2(如 df2(Attempted) 所示,如下所示)。我确信这有一个简单的解决方案!

df1:

Person 1    Person 2    AverageScoreP1   AverageScoreP2

Sam Ellie 2.3 10.2
James Sarah 4.5 8.8
Steven Jane 6.6 3.5
Martin Becky 7.7 2.0

df2:

我想展示的内容:

Person 1    Person 2    AverageScoreP1   AverageScoreP2

Martin Sarah 7.7 8.8
Steven Becky 6.6 2.0
Sam Ellie 2.3 10.2
James Jane 4.5 3.5

df2(尝试):

Person 1    Person 2    AverageScoreP1   AverageScoreP2

Martin Sarah 2.3 10.2
Steven Becky 4.5 8.8
Sam Ellie 6.6 3.5
James Jane 7.7 2.0

最佳答案

这是一种方法(内嵌评论):

df1.columns=df1.columns.str.replace(' ','') #replace spaces, if required create a copy df
d=dict(pd.wide_to_long(df1.reset_index(),['Person','AverageScoreP'],
i='index',j='v').values) #create a dict of name and avg score
<小时/><小时/>
m=df2.replace(d) #replace df2 with dict
m.columns=[i for i in df1.columns if 'Person' not in i] #change col names
df2=df2.join(m) #join with df2
<小时/>
  Person 1 Person 2  AverageScoreP1  AverageScoreP2
0 Martin Sarah 7.7 8.8
1 Steven Becky 6.6 2.0
2 Sam Ellie 2.3 10.2
3 James Jane 4.5 3.5

关于python - 如果其他两个列字符串匹配,如何将一列的平均值复制到另一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56756983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com