python - pandas:打印行中包含非零元素的列名称?

标签 python pandas dataframe

我有一个包含一堆值为零或 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 documentationSeries.nonzero()Series.to_numpy().nonzero() 替换。

而不是

df.iloc[0].nonzero()

尝试

df.iloc[0].to_numpy().nonzero()

关于python - pandas:打印行中包含非零元素的列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68750422/

相关文章:

r - 比较数据帧中的单词并计算每对最大单词长度的矩阵

python - Flask 中的全局变量是线程安全的吗?如何在请求之间共享数据?

python - 我会称之为高级元组操作吗?

python - 将数据从 python pandas 数据框导出或写入 MS Access 表

python - Concat 列名称与第一行的数据,Python 3.6 Dataframe

r - 在 R 中将字符串分解为多个虚拟变量

python - 用于文本分类的 Tensorflow 模型

python - xpath - 通过有条件的 child 获取 parent ID

python - 过滤一个 Excel 工作表中的数据框并导出到另一个 Excel 工作表

python - 根据条件和年份标记 NaN 值