gpt4 book ai didi

python - 在 pandas 数据框查询中转换类型的任何方法?

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:48 26 4
gpt4 key购买 nike

假设我有一个包含 3 列的数据框,全部为 float 类型,将其命名为 DT1。现在,如果我想通过查询 DT1 从 DT1 创建另一个数据帧,假设第二个数据帧称为 DT2。

DT2 = DT1.query(‘(column1/column2) == (column3/column2)’)

只有当等式的两边完全匹配时,这才有效。如果我只想比较两侧的整数结果怎么办?

喜欢:

DT2 = DT1.query(‘(column1/column2).astype(int) == (column3/column2)’).astype(int)

上面的例子不行,有什么解决办法吗?

附言:

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

关于python - 在 pandas 数据框查询中转换类型的任何方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42682478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com