如何从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
答案 0 :(得分:0)
您可以使用以下行:
df = df.loc[~(np.floor(df['A']*10000)==np.floor(df['B']*10000))]
由于您要比较小数位数,因此舍入无济于事。下限会转换为整数,因此会删除所有小数点,但是如果您乘以10000,然后取下限,则实际上是在比较您想要的前4个小数。
答案 1 :(得分:0)
您可以使用熊猫diff
和abs
,并用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