Skip to main content
 首页 » 编程设计

python之Pandas Dataframe之如何将多行合并为一行

2025年05月04日34kenshinobiy

我有一个表单中的数据集:

    A            B 
0  30  60538815980 
1  30   7410811099 
2  26   2238403510 
3  26   2006613744 
4  26   2006618783 
5  26   2006613743 

我想合并 A 的值匹配的行并生成类似的结果

            C_1         C_2         C_3         C_4 
A                                                   
26   2238403510  2006613744  2006618783  2006613743 
30  60538815980  7410811099         NaN         NaN 

我曾尝试用连接或合并来表达它,但到目前为止都失败了。有什么简单的方法可以表达这一点,还是我必须使用 apply 并创建一个新的 DataFrame?

请您参考如下方法:

首先,根据 A 列创建一个 groupby 对象。然后创建一个新的数据框 df2,它使用 ix 根据来自的值 n 索引每个组的列 B A 列。将此数据帧的索引设置为等于 groupby 中的键值(即 A 列中的唯一值)。

最后,使用列表推导式将新列值设置为等于 C_1、C_2 等。

df = pd.DataFrame({'A': [30, 30, 26, 26, 26, 26],  
                   'B': [60538815980, 7410811099, 2238403510,  
                         2006613744, 2006618783, 2006613743]}) 
 
gb = df.groupby('A') 
df2 = pd.DataFrame([df.ix[gb.groups[n], 'B'].values for n in gb.groups],  
                   index=gb.groups.keys()) 
df2.columns = ["C_" + str(i + 1) for i in df2.columns] 
df2.index.name = "A" 
 
>>> df2 
            C_1         C_2         C_3         C_4 
A 
26   2238403510  2006613744  2006618783  2006613743 
30  60538815980  7410811099         NaN         NaN