Python pandas.DataFrame.update中不需要的类型转换

Python pandas.DataFrame.update中不需要的类型转换,python,pandas,Python,Pandas,pandas在更新中将列的类型从int更改为float有什么原因吗?我可以阻止它这样做吗?下面是该问题的一些示例代码 import pandas as pd import numpy as np df = pd.DataFrame({'int': [1, 2], 'float': [np.nan, np.nan]}) print('Integer column:') print(df['int']) for _, df_sub in df.groupby('int'): df_su

pandas在更新中将列的类型从int更改为float有什么原因吗?我可以阻止它这样做吗?下面是该问题的一些示例代码

import pandas as pd
import numpy as np

df = pd.DataFrame({'int': [1, 2], 'float': [np.nan, np.nan]})

print('Integer column:')
print(df['int'])

for _, df_sub in df.groupby('int'):
    df_sub['float'] = float(df_sub['int'])
    df.update(df_sub)

print('NO integer column:')
print(df['int']) 

原因如下:由于您正在有效地屏蔽列上的某些值并将其替换(使用更新),因此某些值可能会变成
`nan

在整数数组中,这是不可能的,因此数字数据类型被先验地转换为float(为了效率),因为首先检查比执行此操作更昂贵


可以更改回数据类型…只是现在代码中没有,因此这是一个bug(虽然有点不寻常):github.com/pydata/pandas/issues/4094

这是一个bug(虽然有点不寻常):当然可以始终
df['int'].astype(int)