Python 3.x 如何检查小数点后的数字?

Python 3.x 如何检查小数点后的数字?,python-3.x,pandas,Python 3.x,Pandas,如何检查小数点后的数字 import pandas as pd df = pd.DataFrame({'num':[1,2,3.5,4,5.8]}) df: 检查后: num check_point 0 1.0 0 1 2.0 0 2 3.5 1 3 4.0 0 4 5.8 1 用于获取小数点后的值,然后将“不等于”与“ne”进行比较,并转换为整数: df['check_point'] = np.modf(df[

如何检查小数点后的数字

import pandas as pd

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

检查后:

    num check_point
0   1.0      0
1   2.0      0
2   3.5      1
3   4.0      0
4   5.8      1
用于获取小数点后的值,然后将“不等于”与“ne”进行比较,并转换为整数:

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

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

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

详情:


检查数字与其四舍五入版本之间的差异,并确定其是否为整数

df['check_point'] = df.num.sub(df.num.round()).ne(0).astype(int)

谢谢你的回答!你真棒@DimaFirst-感谢您提出有趣的问题;
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)
df['check_point'] = df.num.sub(df.num.round()).ne(0).astype(int)