Мне интересно о существующих функциях pandas, которых я, возможно, пока не смог найти.Отфильтровать данные итеративно в кадре данных Python
Базисно, у меня есть кадр данных с различными столбцами. Я хотел бы выбрать определенные строки в зависимости от значений определенных количеств (FYI: меня интересовало значение столбца D, в котором было несколько параметров, описанных в A-C).
E.g. Я хочу знать, какие строки имеют A == 1 & B == 2 & C == 5?
df
A B C D
0 1 2 4 a
1 1 2 5 b
2 1 3 4 c
df_result
1 1 2 5 b
До сих пор я был в состоянии в основном уменьшить это:
import pandas as pd
df = pd.DataFrame({'A': [1,1,1],
'B': [2,2,3],
'C': [4,5,4],
'D': ['a', 'b', 'c']})
df_A = df[df['A'] == 1]
df_B = df_A[df_A['B'] == 2]
df_C = df_B[df_B['C'] == 5]
Для этого:
parameter = [['A', 1],
['B', 2],
['C', 5]]
df_filtered = df
for x, y in parameter:
df_filtered = df_filtered[df_filtered[x] == y]
, которые дали те же результаты. Но мне интересно, есть ли другой способ? Может быть, без цикла в одной строке?
Вы можете комбинировать свои условия 'df [(df ['A'] == 1) & (df ['B'] == 2) & (df ['C'] == 5)]' без использования a loop – EdChum
Но что, если я не знаю заранее, как мои столбцы вызываются и какие значения я хочу, чтобы они имели? – fukiburi
Что это значит? В какой-то момент у вас должна быть какая-то идея, какие столбцы и значения сравнивать? Вы можете легко построить условия – EdChum