Python 如果唯一id具有多个行,且另一列的值不同,如何聚合分类数据?

Python 如果唯一id具有多个行,且另一列的值不同,如何聚合分类数据?,python,Python,我需要将具有相同id的数据聚合到一行中,但将不同的代码保存到不同的列中 我看了这篇文章:,但这篇文章没有回答我的问题 例如:输入数据帧可以是: d = {'id': ['a', 'a', 'a', 'b', 'b', 'b'], 'Code': ['A1', 'A2', 'A3', 'B1', 'B2', 'B3']} df1 = pd.DataFrame(data=d) print(df1) 但输出需要如下所示: d = {'id': ['a', 'b'], 'Code_1': ['A1',

我需要将具有相同id的数据聚合到一行中,但将不同的代码保存到不同的列中

我看了这篇文章:,但这篇文章没有回答我的问题

例如:输入数据帧可以是:

d = {'id': ['a', 'a', 'a', 'b', 'b', 'b'], 'Code': ['A1', 'A2', 'A3', 'B1', 'B2', 'B3']}
df1 = pd.DataFrame(data=d)
print(df1)
但输出需要如下所示:

d = {'id': ['a', 'b'], 'Code_1': ['A1', 'B1'], 'Code_2':['A2', 'B2'], 'Code_3':['A3', 'B3']}
df2 = pd.DataFrame(data=d)
print(df2)
我尝试了多种方法。最接近的是我在另一个问题上找到的代码,它至少完成了聚合部分

df1.groupby('id')['Code'].apply(' '.join).reset_index()
但这会产生一个输出,其中不同的代码作为一个长字符串保存到一列中,而不是保存到多个列中

  id      Code
0  a  A1 A2 A3
1  b  B1 B2 B3
任何帮助都会很好

您可以使用在分离器上拆分分组数据框的
code
列,并传递一个可选参数
expand=True
,该参数将拆分的字符串扩展为多列。这将创建一个新的数据框
df_s
。然后使用,您可以将前缀
code\u
添加到数据帧
df\u s
的列中。最后使用
pd.concat
可以将
df_g[“id”]
df_s
合并

使用:

这张照片是:

 id Code_1 Code_2 Code_3
0  a     A1     A2     A3
1  b     B1     B2     B3
  id      Code
0  a  A1 A2 A3
1  b  B1 B2 B3
df_g = df1.groupby('id')['Code'].apply(' '.join).reset_index()

df_s = df_g["Code"].str.split(' ', expand=True)
df_s.columns = df_s.columns + 1
df_s =  df_s.add_prefix("Code_")

result = pd.concat([df_g["id"], df_s], axis=1) 
print(result)
 id Code_1 Code_2 Code_3
0  a     A1     A2     A3
1  b     B1     B2     B3