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)