Skip to main content
 首页 » 编程设计

python之写入(自定义)将 Pandas 行转换为 python 中的列

2025年05月04日15qlqwjy

我有包含以下数据的 pandas 数据框

Id   Voter   Vote 
123   A      Positive 
123   B      Negative 
123   C      Positive 
 
223   A      Negative    
223   B      Positive  
223   C      Neutral     
223   D      Negative 

对于上面的数据框,我需要一个像这样的旋转输出

Id   Winner  Confidence 
123  Postive  2/3  
223  Negative 2/4      

为了便于阅读,我将 Confidence 列值保留为分数,它们可以是 2/3 = 0.667 和 2/4 = .5

置信度值是根据给予获胜者的获胜选票计算得出的。 例如,id=123 在总共 3 票中有两票赞成,因此它有 2/3 的置信度。

如果它变得容易,总会有赢家。

附言我是 python 的新手,所以对您的解决方案的任何解释都会有所帮助。

请您参考如下方法:

看来你需要crosstab带参数 normalize:

df = pd.crosstab(df['Id'], df['Vote'], normalize=0) 
print (df) 
Vote  Negative  Neutral  Positive 
Id                                
123   0.333333     0.00  0.666667 
223   0.500000     0.25  0.250000 

但是如果需要不同的结构使用:


df1 = df.groupby(['Id','Vote']).size() 
print (df1) 
Id   Vote     
123  Negative    1 
     Positive    2 
223  Negative    2 
     Neutral     1 
     Positive    1 
dtype: int64 
 
df2 = df1.groupby(level='Id').transform('sum') 
print (df2) 
Id   Vote     
123  Negative    3 
     Positive    3 
223  Negative    4 
     Neutral     4 
     Positive    4 
dtype: int64 
 
df3 = df1.div(df2).reset_index(name='col') 
print (df3) 
    Id      Vote       col 
0  123  Negative  0.333333 
1  123  Positive  0.666667 
2  223  Negative  0.500000 
3  223   Neutral  0.250000 
4  223  Positive  0.250000