根据熊猫数据框中各列的数据生成查询

时间:2020-08-01 13:57:41

标签: pandas dataframe

关于如何从像这样的数据框中制作干净代码的任何想法

import pandas as pd
df = pd.DataFrame(list(zip(['Ricardo','Andres','Andres'],[1,2,2])),columns=['name','id'])
df
Out[5]: 
      name  id
0  Ricardo   1
1   Andres   2
2   Andres   2

进行类似的查询

((name == 'Ricardo') | (name == 'Andres') ) & ( (id == 1) | (id ==2) )

就像所有列的唯一值都由|连接。运算符以及由&&运算符连接的运算符...我已经在数据上使用了迭代,但是代码很丑陋

2 个答案:

答案 0 :(得分:0)

这是使用数据帧df的定义的一种方法。

mask = df['name'].isin({'Andres', 'Ricardo'}) & df['id'].isin({1, 2})
df[mask]

      name  id
0  Ricardo   1
1   Andres   2
2   Andres   2

答案 1 :(得分:0)

这是我能得到的清洁工...

query = []
for field, values in df.stack().reset_index().drop_duplicates(subset=['level_1',0]).groupby('level_1'):
    query.append( '('+('('+str(field)+' == '+values[0].astype(str)+')').str.cat(sep = ' | ')+' )' )

' & '.join (query)

Out[29]: '((id == 1) | (id == 2) ) & ((name == Ricardo) | (name == Andres) )'
相关问题