我有如下数据。
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'
中的值放入的列
的信息。我认为这就是您想要的:
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')
关于python - 如何根据python中的其他列将特定列值转换为一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67104730/