muszę filtrować ramki danych z dict, zbudowany z kluczem jest nazwa kolumny, a wartość jest wartością, że chcę, aby filtrować:Filtrowanie dataframe pandy korzystając z wartości dict
filter_v = {'A':1, 'B':0, 'C':'This is right'}
# this would be the normal approach
df[(df['A'] == 1) & (df['B'] ==0)& (df['C'] == 'This is right')]
ale chcę zrobić coś na liniach
for column, value in filter_v.items():
df[df[column] == value]
ale to będzie filtrować ramki danych kilka razy, jedną wartość w czasie, a nie zastosowanie wszystkich filtrów jednocześnie. Czy istnieje sposób, aby to zrobić programowo?
EDIT: Przykład:
df1 = pd.DataFrame({'A':[1,0,1,1, np.nan], 'B':[1,1,1,0,1], 'C':['right','right','wrong','right', 'right'],'D':[1,2,2,3,4]})
filter_v = {'A':1, 'B':0, 'C':'right'}
df1.loc[df1[filter_v.keys()].isin(filter_v.values()).all(axis=1), :]
daje
A B C D
0 1 1 right 1
1 0 1 right 2
3 1 0 right 3
ale oczekiwany wynik był
A B C D
3 1 0 right 3
tylko ostatnia powinna być zaznaczona.
Jakie jest pożądane wyjście? –
Ramka danych zawierająca tylko wartości odpowiadające wszystkim warunkom jednocześnie. – Ivan