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

标签 python pandas pivot

我有如下数据。

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/

相关文章:

python - 将数据保存为 python 模块是否合理?

python-3.x - Pandas 中的条件列选择

python - 在 Python Pandas 中从其他两个系列创建一个元素最小系列

python-3.x - Pandas 动态堆栈

Sklearn CountVectorizer 的 Python 访问标签

python - 将运行时值分配给 tensorflow 变量

python - 如何在 Matplotlib 中绘制带有图例的多个两列文本文件中的数据?

python - 如何将字符串拆分为字符矩阵

sql-server - 在 SQL Server 中将多列转变成行?

mysql - SQL - 将组元素转换为新列