根据浮点列是否为整数(`float.is_integer`)在由True,False填充的pandas df中创建新列

use*_*ser 4 python dataframe pandas

我有一只熊猫df,那里df['value']有一系列的花车。

  • 一些浮点数将是整数(如 25.0)。我想创建一个新的列,df['is_it_whole'][i]其值1(或True)被相应的df['value'][i]是一个整数,0False以其他方式。
  • 我知道我可以做一个 for 循环,但我想知道是否有任何技巧可以用来快速完成(我有一个很大的 df)。
  • 我尝试使用df['is_it_whole'] = df['value'].is_integer()但熊猫系列不支持该is_integer方法,我正在寻找类似的方法。

建议?

Den*_*zov 5

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)


Psi*_*dom 3

你可以试试:

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)