【问题标题】:Pivot Unpivot to create a mapping tablePivot Unpivot 创建映射表
【发布时间】:2020-07-19 19:51:50
【问题描述】:

我有以下格式的数据,其中 Column_1 的值映射到 Map_1、Map_2 或 Map_3。但不是有一个映射表,数据以以下格式存在,其中 1 标记 Column_1 中的哪个值映射到哪个映射值

Column_1 Map_1 Map_2 Map_3
 A         0     1    0 
 B         1     0    0
 C         1     0    0
 D         0     0    1

我想将其转换为以下格式:

A   Map_2
B   Map_1
C   Map_1
D   Map_3
```

【问题讨论】:

标签: python pandas pivot unpivot


【解决方案1】:

熊猫的idxmax 来救援。它返回具有最大值的列,在您的情况下就足够了:

import pandas as pd

df = pd.DataFrame({"Bird":[1,0,1,0], "Snake":[0,0,0,1], "Dog":[0,1,0,0]}) 
df.idxmax(1)

数据帧:

   Bird Snake Dog
0   1   0   0
1   0   0   1
2   1   0   0
3   0   1   0

代码输出:

1      Dog
2     Bird
3    Snake
dtype: object

对于您的情况:

df.loc[:, ["Map_1", "Map_2", "Map_3"]].idxmax(1)

【讨论】:

    【解决方案2】:

    pd.DataFrame.dot 试试这个,假设Column_1 是你的索引:

    df.dot(df.columns)
    

    如果 Column_1 不是您的索引,请尝试:

    df[df.colmuns[1:]].dot(df.columns)
    

    输出:

    A    Map_2
    B    Map_1
    C    Map_1
    D    Map_3
    dtype: object
    

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多