如何根据 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')
我有如下数据。
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')