如果列中的总和等于 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']
我有一个很大的 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']