Skip to main content
 首页 » 编程设计

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

2025年05月04日13leader

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

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)