以python为单位的平均票数聚合

以python为单位的平均票数聚合,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个这样的数据框 ID vote1 vote2 vote3 agg_vote 1 -1 -1 1 -1 2 0 0 -1 -1 3 1 1 -1 1 4 0 1 0 1 ... 我试图汇总每个选民的投票结果。但如果我简单地把它们加在一起,就会得出一个误导性的结果,大多数投票结果都被多个0

我有一个这样的数据框

ID   vote1   vote2   vote3    agg_vote
1     -1      -1       1        -1
2      0       0      -1        -1
3      1       1      -1         1
4      0       1       0         1
...
我试图汇总每个选民的投票结果。但如果我简单地把它们加在一起,就会得出一个误导性的结果,大多数投票结果都被多个
0
s掩盖了。例如,在
ID=2
中,大多数选民选择0,但汇总结果为-1。同样的情况也发生在
ID=4
中。我如何在这里更正我的计算

最终输出将如下所示:

ID   vote1   vote2   vote3    agg_vote
1     -1      -1       1        -1
2      0       0      -1         0
3      1       1      -1         1
4      0       1       0         0
...

这更像是
模式

df['new']=df.filter(regex='^vote').mode(axis=1).iloc[:,0]
df
Out[134]: 
   ID  vote1  vote2  vote3  agg_vote  new
0   1     -1     -1      1        -1   -1
1   2      0      0     -1        -1    0
2   3      1      1     -1         1    1
3   4      0      1      0         1    0
更新问题检查第4行it返回-1

   ID  vote1  vote2  vote3  agg_vote
0   1     -1     -1      1        -1
1   2      0      0     -1        -1
2   3      1      1     -1         1
3   4      0      1     -1         1
df.filter(regex='^vote').mode(axis=1).iloc[:,0]
Out[161]: 
0   -1.0
1    0.0
2    1.0
3   -1.0
Name: 0, dtype: float64

这更像是
模式

df['new']=df.filter(regex='^vote').mode(axis=1).iloc[:,0]
df
Out[134]: 
   ID  vote1  vote2  vote3  agg_vote  new
0   1     -1     -1      1        -1   -1
1   2      0      0     -1        -1    0
2   3      1      1     -1         1    1
3   4      0      1      0         1    0
更新问题检查第4行it返回-1

   ID  vote1  vote2  vote3  agg_vote
0   1     -1     -1      1        -1
1   2      0      0     -1        -1
2   3      1      1     -1         1
3   4      0      1     -1         1
df.filter(regex='^vote').mode(axis=1).iloc[:,0]
Out[161]: 
0   -1.0
1    0.0
2    1.0
3   -1.0
Name: 0, dtype: float64

嗨,尤本,谢谢你的回答。我还有一个条件,当三个投票者给你-1、0和1时,使用mode只返回-1。我该如何避免此情况并将其作为0返回?@JiayuZhang它将返回-1:-)非常感谢!我刚刚用
sum_vote
column:)
df['agg_vote']=np.其中(df['sum_vote']=0,0,df['agg_vote'])
嗨,YOBEN,谢谢你的回答。我还有一个条件,当三个投票者给你-1、0和1时,使用mode只返回-1。我该如何避免此情况并将其作为0返回?@JiayuZhang它将返回-1:-)非常感谢!我刚刚用
sum\u vote
column:)
df['agg\u vote']=np.其中(df['sum\u vote']==0,0,df['agg\u vote'])