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

时间:2019-04-24 16:46:56

标签: 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的“通道”列的参数将上述函数应用于行的子集。

  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]

1 个答案:

答案 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]