Python 如何将行的子集传递给自定义函数并返回列表?

Python 如何将行的子集传递给自定义函数并返回列表?,python,pandas,Python,Pandas,假设我有一个函数,它只返回应用参数和默认参数: def pattern(ch1=False,ch2=False,ch3=False,ch4=False): return [ch1,ch2,ch3,ch4] x = pattern(ch4=True) x Out[77]: [0, 0, 0, True] 如何将上述函数应用于具有以下DataFrame的“channel”列参数的行子集 df1 = pd.DataFrame({"sample":[1,2,3,4,5,6,7,8],

假设我有一个函数,它只返回应用参数和默认参数:

def pattern(ch1=False,ch2=False,ch3=False,ch4=False):
    return [ch1,ch2,ch3,ch4]

x = pattern(ch4=True)
x

Out[77]:

[0, 0, 0, True]
如何将上述函数应用于具有以下DataFrame的“channel”列参数的行子集

  df1 = pd.DataFrame({"sample":[1,2,3,4,5,6,7,8],
                    "channel":["ch1","ch2","ch3","ch4",
                              "ch1","ch2","ch3","ch4"
                              ],
                    "available":[True,True,True,True,
                            False,False,False,False,
                            ]
                    })
df1 = df1.set_index("sample")
df1
假设我想将行索引1传递给2,它应该将ch1&ch2参数设置为True,并返回[True,True,False,False]

第二个示例是将第4行传递到第5行。这应该返回[True,False,False,False]

这里有一个选项:

pattern(**dict(zip(df1.loc[:2]。频道,df1.loc[:2]。可用)))
#[对,对,错,错]
模式(**dict(zip(df1.loc[4:6]。频道,df1.loc[4:6]。可用)))
#[假,假,假,真]

看起来像
pandas.DataFrame.apply
尝试
模式(ch1=df1.loc[1'可用'],ch2=df1.loc[2'可用')
@residentsleep:我尝试了你的代码,它可以工作,但我更喜欢josemz的代码,因为它可以让我对行进行切片并将它们传递给函数,但感谢你的建议非常感谢你的代码它可以像我想要的那样工作!我不知道我可以通过zip函数传递key:value对。那太酷了!!