如何使用动态字符串使用Python过滤数据帧
数据帧如何使用动态字符串使用Python过滤数据帧,python,pandas,Python,Pandas,数据帧 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
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]
出于动态目的,您可以在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
请记住,如果列名中有空格或特殊字符,则无法生成正确的结果。可能类似于query?,比如
con=“(MARKET_x!=MARKET_y)|(CLUSTER_x!=CLUSTER_y)”
df.query(con)@sandepkadapa-工作正常,创建答案;)它起作用了……完美@Sandepekadapa感谢lotIf的答案很有用,别忘了-点击答案旁边的复选标记,将其从灰色变为填充。谢谢