假设我有一个3列的数据框,都为浮点型,将其命名为DT1.
现在,如果我想通过查询DT1从DT1创建另一个数据帧,请说第二个称为DT2.
DT2 = DT1.query(‘(column1/column2) == (column3/column2)’)
仅当方程式的两边完全匹配时,此方法才有效.
如果我只想比较两侧的整数结果怎么办?
喜欢:
DT2 = DT1.query(‘(column1/column2).astype(int) == (column3/column2)’).astype(int)
上面的示例不起作用,有解决方案吗?
PS:
DT2 = DT1.loc(‘(DT1[column1]/DT1[column2]).astype(int) == (DT1[column3[/DT1[column2]).astype(int)’)
将工作.我很好奇它是否可以通过查询工作.
谢谢!
解决方法:
假设您具有以下DF:
In [125]: df
Out[125]:
col1 col2 col3
0 2.11 1.1 2.101
1 1.00 1.0 3.000
2 4.40 2.2 4.900
您可以使用DataFrame.query(…,engine =’python’):
In [132]: df.query("col1 // col2 == col3 // col2", engine='python')
Out[132]:
col1 col2 col3
0 2.11 1.1 2.101
2 4.40 2.2 4.900
或DataFrame.eval(…,engine =’python’):
In [126]: df[df.eval("col1 // col2 == col3 // col2", engine='python')]
Out[126]:
col1 col2 col3
0 2.11 1.1 2.101
2 4.40 2.2 4.900
校验:
In [131]: ((df.col1 / df.col2).astype(int) == (df.col3 / df.col2).astype(int))
Out[131]:
0 True
1 False
2 True
dtype: bool