首页 > 解决方案 > 如何检查小数点后的数字?

问题描述

如何检查小数点后的数字?

import pandas as pd

df = pd.DataFrame({'num':[1,2,3.5,4,5.8]})

东风:

    num
0   1.0
1   2.0
2   3.5
3   4.0
4   5.8

检查后:

    num check_point
0   1.0      0
1   2.0      0
2   3.5      1
3   4.0      0
4   5.8      1

标签: python-3.xpandas

解决方案


用于numpy.modf获取小数点后的值,然后比较不等于ne并转换为整数:

df['check_point'] = np.modf(df['num'])[0].ne(0).astype(int)

或使用numpy.where

df['check_point'] = np.where(np.modf(df['num'])[0] == 0, 0, 1)

另一个想法是测试没有的浮点数是否.0为整数:

df['check_point'] = np.where(df['num'].apply(lambda x: x.is_integer()), 0, 1)

或者:

df['check_point'] = np.where(df['num'].sub(df['num'].astype(int)).astype(bool), 1, 0)

print (df)
   num  check_point
0  1.0            0
1  2.0            0
2  3.5            1
3  4.0            0
4  5.8            1

详情

print (np.modf(df['num']))
(0    0.0
1    0.0
2    0.5
3    0.0
4    0.8
Name: num, dtype: float64, 0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
Name: num, dtype: float64)

推荐阅读