一、问题背景
在将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