如何从df中排除行,其中A列与B列的前4个小数相等?

时间:2019-07-19 22:26:19

标签: python-3.x

如何从df中排除行,其中A列与B列的前四位小数相等?

import pandas as pd
d = {A: [6.03459, 4.08876],'B': [6.03451, 4.13796],'C': ['five', 'one']}
df = pd.DataFrame(data=d)
print(df)

我正在尝试类似df [〜pd.np.isclose(df.legs [0] [:4],df.wings [0] [:4]]

在这种情况下,它将排除第一行6.0345 = 6.0345

2 个答案:

答案 0 :(得分:0)

您可以使用以下行:

df = df.loc[~(np.floor(df['A']*10000)==np.floor(df['B']*10000))]

由于您要比较小数位数,因此舍入无济于事。下限会转换为整数,因此会删除所有小数点,但是如果您乘以10000,然后取下限,则实际上是在比较您想要的前4个小数。

答案 1 :(得分:0)

您可以使用熊猫diffabs,并用ge(1)检验大于或等于1以创建掩码m。最后,使用此遮罩将您的df

切成薄片
m = (df[['A', 'B']] * 10000).diff(axis=1)['B'].abs().ge(1)
df[m]

Out[266]:
         A        B    C
1  4.08876  4.13796  one