如何根据 python 中的其他列将特定列值转换为一行?

How to convert particular column values to one row based on other column in python?

我有如下数据。

col1    col2
23      101
23      102
24      101
25      102
25      103

我想根据 col1 旋转 col2。所需的输出如下所示。

col1   pro_1  pro_2   pro_3
23     101    102     NA
24     101    NA      NA
25     NA     102     103 

试过如下:

data.pivot(data,columns=['col_1'],values=['col_2'])

我收到如下错误:

ValueError: The name col_1 occurs multiple times, use a level number

您需要提供有关要将 'col2' 中的值放入其中的 columns 的信息。我想这就是你想要的:

mapping = {101: 'pro1', 102: 'pro2', 103: 'pro3'}
df['cols'] = df.col2.map(mapping)
df.pivot(index='col1', values='col2', columns='cols')

编辑:您可以像这样自动创建映射:

df['cols'] = 'pro' + df.col2.astype(str)

Edi2:您可以像这样检查您的数据是否有重复的行:

df.duplicated()

如果你只是想摆脱这些,你可以做到

df.loc[~df.duplicated()].pivot(index='col1', values='col2', columns='cols')