4
任意の長さの条件のリストを取得し、すべての条件の間にアンパサンドを配置する関数を使用したいと考えています。以下のコード例。条件リストを使用してPandasのDataFrameをフィルタリングする
df = pd.DataFrame(columns=['Sample', 'DP','GQ', 'AB'],
data=[
['HG_12_34', 200, 35, 0.4],
['HG_12_34_2', 50, 45, 0.9],
['KD_89_9', 76, 67, 0.7],
['KD_98_9_2', 4, 78, 0.02],
['LG_3_45', 90, 3, 0.8],
['LG_3_45_2', 15, 12, 0.9]
])
def some_func(df, cond_list):
# wrap ampersand between multiple conditions
all_conds = ?
return df[all_conds]
cond1 = df['DP'] > 40
cond2 = df['GQ'] > 40
cond3 = df['AB'] < 0.4
some_func(df, [cond1, cond2]) # should return df[cond1 & cond2]
some_func(df, [cond1, cond3, cond2]) # should return df[cond1 & cond3 & cond2]
私はこれに助けていただきありがとうございます。
ではなく、カスタムラムダの 'operator.and_'を使用するようにしても良いかもしれません。 –
@AryaMcCarthy:ええ、それは確かにもっときれいです。 –
または、numpyから: 'np.logical_and.reduce([cond1、cond2、cond3])' – ayhan