python - Pandas:从互斥选择的多列中获取一行中特定单个值的列索引/标签

标签 python pandas

我有一个像这样的 pandas 数据框,其中的列是用户的年龄组,数字 1 表示用户是否属于该用户组。

   21_30   31_40    40_49     50_59
0   0         0        0         1
1   0         1        0         0
2   0         1        0         0
3   1         0        0         0
4   0         0        1         0

我想做的是将所有信息收集到一列中,并将数字 1 转换为指示年龄组的字符串。

    age_group
0      50_59
1      31_40
2      31_40
3      21_30
4      40_49


我怎样才能最好地解决这个问题?任何意见将是有益的。提前致谢!

最佳答案

您可以检查行中的列值是否等于 1,并通过 .idxmax() 获取与 True 对应的列索引(对于 1 的条目)。 (使用axis=1获取列索引),如下:

df['age_group'] = df.eq(1).idxmax(axis=1)

结果:

print(df)

   21_30  31_40  40_49  50_59 age_group
0      0      0      0      1     50_59
1      0      1      0      0     31_40
2      0      1      0      0     31_40
3      1      0      0      0     21_30
4      0      0      1      0     40_49

关于python - Pandas:从互斥选择的多列中获取一行中特定单个值的列索引/标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68291598/

相关文章:

python - 如何阻止 NLTK 词干分析器删除尾随的 "e"?

python - ansible 测试失败,因为在 gitlab-ci 中查找 ('file' 、 '/path/to/file' )返回旧内容

python - Tkinter gui 中的指数函数

python - pandas 在不知道列数的情况下选择行

python - 计算每行的链接数量并将计数添加为新列

python - 试图找出一个数字中有多少位是另一个数字的倍数

python - 无法加载 PostgreSQL 的 Python 绑定(bind) - psycopg2

python - 如何删除 DataFrame 字符串中的特殊字符(例如 ",")?

python-3.x - 使用 Pandas python 从 geonames 导入文本文件

python - 数据帧转换后保留标题