Skip to main content
 首页 » 编程设计

python之在 Pandas 中,如何根据另一列的值拆分一列

2025年05月04日21www_RR

我想从这个数据框结构开始:

df = pd.DataFrame({'col1':['a','a','b','b','c','c'], 
               'col2':['str_a1','str_a2','str_b1','str_b2','str_c1','str_c2']}) 
 
df 

这个

df2 = pd.DataFrame({'col1_1':['a','b','c'], 
                'col2_1':['str_a1','str_b1','str_c1'], 
                'col2_2':['str_a2','str_b2','str_c2']}) 
df2 

有没有办法在 pandas 中实现这一点?

请您参考如下方法:

使用、assign 和pivot 以及add_prefix

s = df.groupby('col1').cumcount().add(1) 
df_out =  (df.assign(n=s).pivot('col1', 'n', 'col2').add_prefix('col2_') 
             .reset_index()) 
 
Out[32]: 
n col1  col2_1  col2_2 
0    a  str_a1  str_a2 
1    b  str_b1  str_b2 
2    c  str_c1  str_c2 

或者set_index和pivot和T

s = df.groupby('col1').cumcount().add(1) 
df_out = (df.set_index(s).pivot(columns='col1', values='col2') 
            .rename(lambda x: f'col2_{x}').T.reset_index()) 
 
Out[75]: 
  col1  col2_1  col2_2 
0    a  str_a1  str_a2 
1    b  str_b1  str_b2 
2    c  str_c1  str_c2