use*_*ser 4 python dataframe pandas
我有一只熊猫df
,那里df['value']
有一系列的花车。
df['is_it_whole'][i]
其值1
(或True
)被相应的df['value'][i]
是一个整数,0
或False
以其他方式。df['is_it_whole'] = df['value'].is_integer()
但熊猫系列不支持该is_integer
方法,我正在寻找类似的方法。建议?
import pandas as pd
df = pd.DataFrame([['A', 1], ['B', 2.5], ['C', 3.0], ['D', 3.2]], columns=['label', 'value'])
df['is_it_whole'] = df['value'].map(lambda x: x.is_integer())
df
label value is_it_whole
0 A 1.0 True
1 B 2.5 False
2 C 3.0 True
3 D 3.2 False
Run Code Online (Sandbox Code Playgroud)
你可以试试:
df['is_it_whole'] = (df['value'].round() == df['value'])
Run Code Online (Sandbox Code Playgroud)
或者考虑浮点数的不准确性:
tol = 0.001
df['is_it_whole'] = ((df['value'].round() - df['value']).abs() < tol)
Run Code Online (Sandbox Code Playgroud)