gpt4 book ai didi

python - 获取每次两个值匹配的总和

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:10 24 4
gpt4 key购买 nike

我的 googleing 失败了,我认为我的主要问题是我不确定如何措辞这个问题(抱歉这个蹩脚的标题)。每次有 2 个人以相同方式投票时,我都试图找到总数。下面您将看到一个示例,说明数据的外观和我正在寻找的输出。我有一个可行的解决方案,但它非常慢(见底部),我想知道是否有更好的方法来解决这个问题。

This is how the data is shaped

----------------------------------
event person vote
1 a y
1 b n
1 c nv
1 d nv
1 e y
2 a n
2 b nv
2 c y
2 d n
2 e n
----------------------------------

This is the output im looking for

----------------------------------
Person a b c d e
a 2 0 0 1 2
b 0 2 0 0 0
c 0 0 2 1 0
d 1 0 1 2 1
e 2 0 0 1 2
----------------------------------


工作代码

df = df.pivot(index='event', columns='person', values='vote')

frame = pd.DataFrame(columns=df.columns, index=df.columns)

for person1, value in frame.iterrows():

for person2 in frame:

count = 0
for i, row in df.iterrows():

person1_votes = row[person1]
person2_votes = row[person2]

if person1_votes == person2_votes:
count += 1

frame.at[person1, person2] = count

最佳答案

尝试以不同的方式看待你的问题

df=df.assign(key=1)
mergedf=df.merge(df,on=['event','key'])
mergedf['equal']=mergedf['vote_x'].eq(mergedf['vote_y'])
output=mergedf.groupby(['person_x','person_y'])['equal'].sum().unstack()
output
Out[1241]:
person_y a b c d e
person_x
a 2.0 0.0 0.0 1.0 2.0
b 0.0 2.0 0.0 0.0 0.0
c 0.0 0.0 2.0 1.0 0.0
d 1.0 0.0 1.0 2.0 1.0
e 2.0 0.0 0.0 1.0 2.0

关于python - 获取每次两个值匹配的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841727/

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