如何从pandas列中删除浮点值

2024-04-28 03:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧如下所示

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

如下所示

enter image description here

我想删除values中以.[1-9]结尾的values列。基本上,我希望保留5.06.0等值,并删除5.46.4等值

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

^{pr2}$

我希望我的输出如下所示

enter image description here


Tags: 数据iddataframedf结尾valpdsubject
2条回答

使用mod 1确定残差。如果残差为0,则表示数字是整数。然后使用结果作为掩码,只选择那些行。在

df.loc[df.val.mod(1).eq(0)].astype(int)

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

第一个想法是将原始值与casted column进行比较,同时为预期输出分配整数(列中的整数):

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

另一个想法是测试is_integer

^{pr2}$

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

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

相关问题 更多 >