如何检查小数点后的数字?
import pandas as pd
df = pd.DataFrame({'num':[1,2,3.5,4,5.8]})
df:
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
答案 0 :(得分:2)
使用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)
答案 1 :(得分:1)
检查数字与四舍五入后的数字之间的差异,并确定它是否为整数。
df['check_point'] = df.num.sub(df.num.round()).ne(0).astype(int)