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]
Для динамической цели вы можете использовать структуру query
SQL в 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
Помните, что если имена столбцов имеют пробелы или специальные символы, они не могут получить правильные результаты.
con = "(MARKET_x!=MARKET_y)|(CLUSTER_x!=CLUSTER_y)"
затемdf.query(con)
.