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对。那太酷了!!