python - Pandas 数据帧 : How to convert binary columns into one categorical column?

标签 python pandas dataframe binary dummy-variable

给定一个 pandas DataFrame,如何将多个二进制列(其中 1 表示值存在,0 表示不存在)转换为单个分类列?

另一种思考方式是如何执行“反向pd.get_dummies()”?

下面是一个将分类列转换为多个二进制列的示例:

import pandas as pd
s = pd.Series(list('ABCDAB'))
df = pd.get_dummies(s)
df
   A  B  C  D
0  1  0  0  0
1  0  1  0  0
2  0  0  1  0
3  0  0  0  1
4  1  0  0  0
5  0  1  0  0

我想完成的是给定一个数据框

df1
   A  B  C  D
0  1  0  0  0
1  0  1  0  0
2  0  0  1  0
3  0  0  0  1
4  1  0  0  0
5  0  1  0  0

我可以把它转换成

df1
   A  B  C  D   category
0  1  0  0  0   A
1  0  1  0  0   B
2  0  0  1  0   C
3  0  0  0  1   D
4  1  0  0  0   A
5  0  1  0  0   B

最佳答案

一种方法是使用 idxmax 找到 1:

In [32]: df["category"] = df.idxmax(axis=1)

In [33]: df
Out[33]: 
   A  B  C  D category
0  1  0  0  0        A
1  0  1  0  0        B
2  0  0  1  0        C
3  0  0  0  1        D
4  1  0  0  0        A
5  0  1  0  0        B

关于python - Pandas 数据帧 : How to convert binary columns into one categorical column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381438/

相关文章:

sql - 将 R Dataframe 中的多行插入 Oracle 数据库

python - tensorflow object detection 从现有检查点微调模型

python - 使用 Python NLTK 对大型 (>70MB) TXT 文件进行标记。串联并写入数据以流式传输错误

python - 不确定如何设计 Django 应用程序 - 最佳实践

python - Pandas: bool /谓词搜索的首选习语

python - pandas.DataFrame 将所有字符串值设置为 nan

python - 在同一行过滤来自 pandas.groupby 的结果

python - 是否可以在 Dataframe 中使用 Pandas Overlap?

python - 根据上一行的输出分配值

python - 如何将列表元组内的元素转换为二维列表