Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用动态字符串使用Python过滤数据帧_Python_Pandas - Fatal编程技术网

如何使用动态字符串使用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的答案很有用,别忘了-点击答案旁边的复选标记,将其从灰色变为填充。谢谢