Как использовать динамическую строку для фильтрации фрейма данных с помощью Python Pandas - PullRequest
0 голосов
/ 12 октября 2018

DataFrame

    PROJECT  CLUSTER_x  MARKET_x  CLUSTER_y  MARKET_y     Exist
0   P17      A          CHINA     C          CHINA        both
1   P18      P          INDIA     P          INDIA        both
2   P16      P          AMERICA   P          AMERICA      both
3   P19      P          INDIA     P          JAPAN        both

Этот нижеприведенный код прекрасно работает и выдает выходные данные в виде индексов 0 и 3

df_mismatched = df_common[ (df_common['MARKET_x'] != df_common['MARKET_y']) | (df_common['CLUSTER_x'] != df_common['CLUSTER_y']) ]

Как мы можем динамически построить такие критерии фильтрации?что-то вроде приведенного ниже кода, так что в следующий раз жесткое кодирование не понадобится

str_common = '(df_common["MARKET_x"] != df_common["MARKET_y"]) | (df_common["CLUSTER_x"] != df_common["CLUSTER_y"])'
df_mismatched = df_common[str_common]

1 Ответ

0 голосов
/ 12 октября 2018

Для динамических целей вы можете использовать query в Python, например:

con = "(MARKET_x!=MARKET_y)|(CLUSTER_x!=CLUSTER_y)"
print(df.query(con))

  PROJECT CLUSTER_x MARKET_x CLUSTER_y MARKET_y Exist
0     P17         A    CHINA         C    CHINA  both
3     P18         P    INDIA         P    JAPAN  both

Помните, что если в именах столбцов есть пробелы или специальные символы, это не дает правильногорезультаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...