Pandas与给定值比较时数据框的舍入值

kkih6yb8  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(81)

我遇到了一个奇怪的问题。我有一个dataframe df。我想通过拒绝所有具有2.750和3.250之间的'position'(列的名称)值的行来创建另一个dataframe df2。我已经这样做了很多次,如下所示:

df_a = df[(df['position'] < 2.750)]
df_b = df[((df['position'] > 3.250)]
df2 = pd.concat([df_a, df_b])

问题是,当列的值像2.750003甚至2.75时,似乎pandas会对值进行四舍五入,然后保留该行,即使它应该被拒绝。
有人有建议吗?谢谢

ttcibm8c

ttcibm8c1#

如果要拒绝2.75到3.25之间的所有内容,可以用途:

out = df[(df['position'] < 2.750) | (df['position'] > 3.250)]

或者:

out = df[~df['position'].between(2.75, 3.250)]

输出示例:

position
0   1.00000
1   2.00000
2   2.74000
7   3.25001
8   4.00000

使用的输入:

df = pd.DataFrame({'position': [1,
                                2,
                                2.74,
                                2.75,         #
                                2.750000001,  # should be
                                3,            # rejected
                                3.25,         #
                                3.25001,
                                4,
                               ]})

相关问题