python - 当行元素满足条件 Pandas 时查找列名

标签 python pandas indexing

这是一个基本问题。我有一个方形数组,其中包含行和列的总和。例如:

df = pd.DataFrame([[0,0,1,0], [0,0,1,0], [1,0,0,0], [0,1,0,0]], index = ["a","b","c","d"], columns = ["a","b","c","d"])
df["sumRows"] = df.sum(axis = 1)
df.loc["sumCols"] = df.sum()

返回:

In [100]: df
Out[100]: 
         a  b  c  d  sumRows
a        0  0  1  0        1
b        0  0  1  0        1
c        1  0  0  0        1
d        0  1  0  0        1
sumCols  1  1  2  0        4

我需要找到与 0 匹配的 sumCols 行的列标签。目前我正在这样做:

[df.loc["sumCols"] == 0].index

但是这返回了一个奇怪的索引类型对象。我想要的只是一个符合此条件的值列表,即:在本例中为 ['d']。

最佳答案

有两种方法(索引对象可以转换为像列表一样的可交互对象)。

对列执行此操作:

columns = df.columns[df.sum()==0]
columns = list(columns)

或者您可以旋转 Dataframe 并将列视为行:

list(df.T[df.T.sumCols == 0].index)

关于python - 当行元素满足条件 Pandas 时查找列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41289074/

相关文章:

python - 如何将两列 Pandas 数据框移动和堆叠成一列?

c - 使用 boolean 值 "mask"数组进行数组索引

mysql - MySQL 是否支持部分索引?

python - 将组内的行合并在一起

python - Pandas - 通过不规则字符串模式的计算创建新列

python - 数据获取检查PUB/SUB模式

Java有序映射集转换为数组

python - 使用 Python 将 CSV 行转换为 XML 文件

python - 当两行的值不同时,如何合并/组合 DataFrame 中列/系列中的两行?

python - 根据另一个 DataFrame 的公共(public)列过滤和替换一个 Pandas DataFrame 中的值