【Python】DataFrame.at 的数据类型问题

本文介绍了在使用Pandas DataFrame的.at[]方法进行赋值时遇到的问题,即数据类型被意外转换为整数。通过示例展示了在尝试将0.1赋值给DataFrame的一处元素后,实际存储的值变为0。解决方法是在赋值前将目标列的数据类型转换为浮点数,确保赋值操作成功。这个技巧对于处理涉及浮点数精度的DataFrame操作至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题背景

在将DataFrame.loc() 替换为 DataFrame.at() 之后发现 使用at方法无法赋值,例子如下

df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]], index=[4, 5, 6], columns=['A', 'B', 'C'])
df.at[4, 'B'] = 0.1
df

在这里插入图片描述

注意到,在对(4,‘B’)赋值0.1后,实际数字为0。于是,问题发现,看起来是使用at之后,数据类型被转换成了int。

二. 解决方法

在使用 at 方法赋值之前,先将数据类型转换为float

df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]], index=[4, 5, 6], columns=['A', 'B', 'C'])
df.B = df.B.astype(float)
df.at[4, 'B'] = 0.1
df

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值