假设我有此函数,它仅向我返回应用的参数和默认参数:
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的“通道”列的参数将上述函数应用于行的子集。
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]
答案 0 :(得分:1)
这是一个选择:
pattern(**dict(zip(df1.loc[:2].channel, df1.loc[:2].available)))
# [True, True, False, False]
pattern(**dict(zip(df1.loc[4:6].channel, df1.loc[4:6].available)))
# [False, False, False, True]