如果列中的总和等于 n,则将 n 行作为输入和 returns 列名称的函数

Function that takes n rows as input and returns column names if sum in column equals n

我有一个很大的 DataFrame 结构如下:

import pandas as pd

df = pd.DataFrame({'name1': [1, 0, 1,1],
                   'name2': [0, 0, 0,1],
                   'name3': [1, 1, 1,1],
                   'namen': [0, 0, 0,0]},
                  index=['label1', 'label2', 'label3', 'labeln'])
>>> df
      name1 name2 name3 name4
label1  1     0     1      1
label2  0     0     0      1
label3  1     1     1      1
label4  0     0     0      0

我正在尝试构建一个函数,该函数接受 n 行名称作为参数,对所有列中的值求和,如果总和 returns 我是列名称这些列的数量等于 n

例如,使用 label1、label2 和 label3 作为输入,我想获得以下输出:

def common_terms(*nargs):
   the function...

>>> common_terms(label1, label2, label3)
(name4)

>>> common_terms(label1, label3)
(name1, name3)

我对在 Python 中构建函数知之甚少,但我的头脑真的卡在了这个上面。你能帮我进步吗?

loc 过滤行并测试每列是否全部 1,然后过滤 index of Series:

def common_terms(*nargs):
   i = df.loc[list(nargs)].all()
   return i.index[i].tolist()

print (common_terms('label1', 'label2', 'label3'))
['namen']

print (common_terms('label1','label3'))
['name1', 'namen']