按列分组并根据值将值分散到多个列中[重复]

问题描述 投票:0回答:1

我想执行一项操作,根据另一列中的相同值将一列中的值扩展到新列。请参阅下面的示例

import pandas as pd
pd.DataFrame({'A': ['a', 'a', 'b', 'b'], 'B': ['x1', 'x2', 'x3', 'x4']})
   A   B
0  a  x1
1  a  x2
2  b  x3
3  b  x4

我想把它改成

   A  B1  B2
0  a  x1  x2
1  b  x3  x4

对于具有更多行和更多列的更大数据框。但是该操作只能在两列上执行。

python pandas dataframe
1个回答
0
投票

您可以通过以下方式实现这一目标:

import pandas as pd

df = pd.DataFrame({'A': ['a', 'a', 'b', 'b'], 'B': ['x1', 'x2', 'x3', 'x4']})

df['helper'] = df.groupby('A').cumcount() + 1
result = df.pivot(index='A', columns='helper', values='B')

result.columns = [f'B{i}' for i in result.columns]
result = result.reset_index()

print(result)

这给出了

   A  B1  B2
0  a  x1  x2
1  b  x3  x4
© www.soinside.com 2019 - 2024. All rights reserved.