In [1]:
import pandas as pd
In [3]:
df = pd.DataFrame({'A':[1,10,1,23],
'B':[20, 4, 5, 7],
'C':[3,5,8,18]})
In [4]:
df
Out[4]:
In [16]:
df
Out[16]:
In [8]:
filter_list_a = [1]
filter_list_b = [20, 5]
filter_list_c = [3, 8]
In [10]:
df[df['A'].isin(filter_list_a) & df['B'].isin(filter_list_b) & df['C'].isin(filter_list_c)]
Out[10]:
In [43]:
df
Out[43]:
In [42]:
df[df[['A', 'B', 'C']].isin([1,20,3,5,8]).sum(axis=1) == len(df.columns)]
Out[42]:
In [44]:
# 필요한 값들이 있는지 T/F로 나뉨
df[['A', 'B', 'C']].isin([1,20,3,5,8])
Out[44]:
In [45]:
# axis=1로 합침
df[['A', 'B', 'C']].isin([1,20,3,5,8]).sum(axis=1)
Out[45]:
In [46]:
# axis=1로 합쳐서 column 개수만큼이라면 모든 조건을 만족
df[['A', 'B', 'C']].isin([1,20,3,5,8]).sum(axis=1) == len(df.columns)
Out[46]:
In [12]:
def make_mask(column_name, filter_list):
mask = df[column_name].isin(filter_list)
return mask
In [47]:
df[['A', 'B', 'C']].isin([1,20,3,5,8]).all()
Out[47]:
In [17]:
df[make_mask('A', filter_list_a)][make_mask('B', filter_list_b)][make_mask('C', filter_list_c)]
Out[17]:
In [51]:
df[df.isin([1,20,3,1,5,8]).all(axis=1)]
Out[51]:
In [52]:
df.isin([1,20,3,1,5,8]).all(axis=1)
Out[52]: