python - Pandas:将列名压缩为 True 的单元格值

标签 python pandas dataframe

我有一个看起来像的数据框

ID       Cat1    Cat2    Cat3    Cat4
3432432  True    False   True    False
1242323  False   True    False   False
3423883  False   False   False   True

如何将其转换为选择第一列为 True 的数据框?

ID       Status    
3432432  Cat1
1242323  Cat2
3423883  Cat4

最佳答案

您可以利用 idxmax 将返回第一个 True 的事实:

>>> df.set_index("ID").idxmax(axis=1).reset_index(name="Status")
        ID Status
0  3432432   Cat1
1  1242323   Cat2
2  3423883   Cat4

这是可行的,因为我们有

>>> df.iloc[:,1:]
    Cat1   Cat2   Cat3   Cat4
0   True  False   True  False
1  False   True  False  False
2  False  False  False   True
>>> df.iloc[:,1:].idxmax(axis=1)
0    Cat1
1    Cat2
2    Cat4
dtype: object

关于python - Pandas:将列名压缩为 True 的单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34955321/

相关文章:

python - 当我在 pandas 中使用 parse_dates 时,如何保留日期和时间列?

python - 如何在Python中重命名行?

python - 没有替换概率的抽样

python - 设置超时/尝试次数/强制停止在 P4Python 中同步有问题的文件

python - pandas 计算列中相同元素的数量,如果数量很小则删除

r - 如何删除数据框中的行?

python - 如何在 Dataframe 的行级别应用计算?

python - Selenium 找不到99%的元素,为什么?

python - 通过 id 列表过滤 pandas 数据框

python - 根据businessdate索引估算数据框中多列的缺失日期