Skip to main content
 首页 » 编程设计

python之加入合并多个数据框

2025年05月04日28dyllove98

我的数据是这样的:

Name    test1   test2    test3     Count 
Emp1    X,Y      A       a1,a2      1 
Emp2    X       A,B,C    a3         2 
Emp3    Z        C       a4,a5,a6   3 

将具有多个值的 test1 和 test2 单元格拆分为单独的行并将它们合并在一起。

    df2 =  df.test1.str.split(',').apply(pd.Series) 
    df2.index =  df.set_index(['Name', 'Count']).index 
    df2=df2.stack().reset_index(['Name', 'Count']) 
    df3 = df.test2.str.split(',').apply(pd.Series) 
    df3.index = df.set_index(['Name', 'Count']).index 
    df3=df3.stack().reset_index(['Name', 'Count']) 
 
    df2.merge(df3,on=['Name', 'Count'],how='outer') 

代码外是:

Out[132]:  
   Name  Count 0_x 0_y 
0  Emp1      1   X   A 
1  Emp1      1   Y   A 
2  Emp2      2   X   A 
3  Emp2      2   X   B 
4  Emp2      2   X   C 
5  Emp3      3   Z   C 

将具有多个值的 Test3 拆分为单独行的代码

    df4.index = df.set_index(['Name', 'Count']).index 
    df4=df4.stack().reset_index(['Name', 'Count']) 

任何人都可以帮助我,如何将 Test3 与 test2 和 test1 进行多重连接 就像我在上面的代码中合并 Test1 和 Test 一样?

请您参考如下方法:

更像

df1=df.stack().str.split(',').apply(pd.Series) 
df1.stack().unstack(level=2).groupby(level=[0,1]).ffill().reset_index(level=[0,1]) 
Out[124]:  
   Name  Count test1 test2 test3 
0  Emp1      1     X     A    a1 
1  Emp1      1     Y     A    a2 
0  Emp2      2     X     A    a3 
1  Emp2      2     X     B    a3 
2  Emp2      2     X     C    a3 
0  Emp3      3     Z     C    a4 
1  Emp3      3     Z     C    a5 
2  Emp3      3     Z     C    a6