Joh*_*ohn 4 python dataframe pandas
我有一个看起来像的数据框
ID Cat1 Cat2 Cat3 Cat4
3432432 True False True False
1242323 False True False False
3423883 False False False True
Run Code Online (Sandbox Code Playgroud)
如何将其转换为选择第一列为True的数据框?
ID Status
3432432 Cat1
1242323 Cat2
3423883 Cat4
Run Code Online (Sandbox Code Playgroud)
你可以利用idxmax将返回第一个True 的事实:
>>> df.set_index("ID").idxmax(axis=1).reset_index(name="Status")
ID Status
0 3432432 Cat1
1 1242323 Cat2
2 3423883 Cat4
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我们有
>>> 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
Run Code Online (Sandbox Code Playgroud)