Skip to main content
 首页 » 编程设计

python之具有列表值的 Pandas 数据框列

2025年05月04日15linjiqin

我有一个 Pandas 数据框,其中列包含值列表。像下面这样。

            A                           B                            
0   ['x','x','y','y','z']           ['m','m','n','n','p'] 

我想为列表中的每个唯一项目创建单独的列,并在这些新列下提及每个项目的计数。

            A                           B                       x   y   z   m   n   p            
0   ['x','x','y','y','z']           ['m','m','n','n','p']       2   2   1   2   2   1   

有人可以为此编写代码吗?

请您参考如下方法:

使用:

pd.concat([df,df.stack().explode().value_counts().to_frame().T],axis=1) 

输出:

                 A                B  m  x  y  n  z  p 
0  [x, x, y, y, z]  [m, m, n, n, p]  2  2  2  2  1  1 

如果你想保持列表的顺序:

s=df.stack().explode() 
pd.concat([df,s.value_counts().reindex(s.drop_duplicates()).to_frame().T],axis=1) 
 
                 A                B  x  y  z  m  n  p 
0  [x, x, y, y, z]  [m, m, n, n, p]  2  2  1  2  2  1 

不止一行:

pd.concat([df,df.stack().explode().groupby(level=0).value_counts().unstack()],axis=1) 
 
                 A                b    m    n    p    q    x    y    z 
0  [x, x, y, y, z]  [m, m, n, n, p]  2.0  2.0  1.0  NaN  2.0  2.0  1.0 
1  [y, y, y, y, z]  [p, q, n, n, p]  NaN  2.0  2.0  1.0  NaN  4.0  1.0