Skip to main content
 首页 » 编程设计

python之具有重复值的数据框

2025年05月04日12unruledboy

考虑下面的pd.DataFrame

temp = pd.DataFrame({'label_0':[1,1,1,2,2,2],'label_1':['a','b','c',np.nan,'c','b'], 'values':[0,2,4,np.nan,8,5]}) 
 
print(temp) 
        label_0 label_1 values 
    0   1           a   0.0 
    1   1           b   2.0 
    2   1           c   4.0 
    3   2          NaN  NaN 
    4   2           c   8.0 
    5   2           b   5.0 

我想要的输出是

     label_1    1   2 
  0     a      0.0  NaN 
  1     b      2.0  5.0 
  2     c      4.0  8.0 
  3     NaN    NaN  NaN 

我已经尝试过 pd.pivot 并与 pd.gropuby 争论不休,但由于重复条目而无法获得所需的输出。非常感谢任何帮助。

请您参考如下方法:

d = {} 
for _0, _1, v in zip(*map(temp.get, temp)): 
    d.setdefault(_1, {})[_0] = v 
 
pd.DataFrame.from_dict(d, orient='index') 
 
       1    2 
a    0.0  NaN 
b    2.0  5.0 
c    4.0  8.0 
NaN  NaN  NaN 

或

pd.DataFrame.from_dict(d, orient='index').rename_axis('label_1').reset_index() 
 
  label_1    1    2 
0       a  0.0  NaN 
1       b  2.0  5.0 
2       c  4.0  8.0 
3     NaN  NaN  NaN