python-以任何方式在Pandas DataFrame查询中强制转换类型吗?

假设我有一个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
上一篇:构造函数vs typeof以检测JavaScript中的类型


下一篇:可以为XAttribute和XElement编写方法吗?