首页 > 解决方案 > 如何从列中删除浮点值 - 熊猫

问题描述

我有一个如下所示的数据框

df = pd.DataFrame({
 'subject_id':[1,1,1,1,1,1],
  'val' :[5,6.4,5.4,6,6,6]
 })

如下图所示

在此处输入图像描述

我想values删除val.[1-9]. 基本上我想保留诸如 之类的值5.06.0并删除诸如之类5.46.4

虽然我在下面尝试过,但它并不准确

df['val'] = df['val'].astype(int)
df.drop_duplicates()  # it doesn't give expected output and not accurate.

我希望我的输出如下所示

在此处输入图像描述

标签: pythonpython-3.xpandasdataframe

解决方案


第一个想法是将原始值与强制转换列与整数进行比较,还将整数分配回预期输出(列中的整数):

s = df['val']
df['val'] = df['val'].astype(int)

df = df[df['val'] == s]
print (df)
   subject_id  val
0           1    5
3           1    6
4           1    6
5           1    6

另一个想法是 test is_integer

mask = df['val'].apply(lambda x: x.is_integer())
df['val'] = df['val'].astype(int)

df = df[mask]
print (df)

   subject_id  val
0           1    5
3           1    6
4           1    6
5           1    6

如果需要在输出中浮动,您可以使用:

df1 = df[ df['val'].astype(int) == df['val']]
print (df1)
   subject_id  val
0           1  5.0
3           1  6.0
4           1  6.0
5           1  6.0

推荐阅读