我有一个包含一堆值为零或 1 的列的 DataFrame。例如,
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() was an method of Series 。)
如何获取所需的列名称?
(在提出这个问题之前尝试过搜索,但没有找到任何重复项。)
最佳答案
根据 Pandas documentation ,Series.nonzero() 被 Series.to_numpy().nonzero() 替换。
而不是
df.iloc[0].nonzero()
尝试
df.iloc[0].to_numpy().nonzero()
关于python - pandas:打印行中包含非零元素的列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68750422/