我有一个DataFrame与一堆列的值是0或1。例如,
import numpy as np
import pandas as pd
df = pd.DataFrame(np.array([[0,1,0,1],[1,1,0,0]]), columns=['a','b','c','d'])
df
a b c d
0 0 1 0 1
1 1 1 0 0
在给定的行(比如0)中,我想打印非零列的名称。我试着用
df.iloc[0].nonzero()
但不是得到'b', 'd'
(甚至[1,3],因为nonzero()应该返回索引),我得到
AttributeError: 'Series' object has no attribute 'nonzero'
(编辑:忘记这行:我认为nonzero()是Series的一个方法。)
如何获得所需的列名?
(在询问此问题之前尝试搜索,但未找到任何重复项)
根据pandas文档,Series.nonzero()被Series.to_numpy().nonzero()取代。不是
df.iloc[0].nonzero()
试
df.iloc[0].to_numpy().nonzero()
试试这个:
df.iloc[0].loc[lambda df: df.ne(0)].index
Index(['b', 'd'], dtype='object')