8

pandas 有什么理由将列的类型从 int 更改为 float in update,我可以阻止它这样做吗?这是问题的一些示例代码

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']) 
4

1 回答 1

5

原因如下:由于您有效地屏蔽了列上的某些值并替换它们(使用您的更新),因此某些值可能变为`nan

在整数数组中这是不可能的,因此数字 dtypes 被先验地转换为浮点数(为了提高效率),因为首先检查比这样做更昂贵

dtype 的改变是可能的......只是现在不在代码中,因此这是一个错误(虽然有点不重要):github.com/pydata/pandas/issues/4094

于 2013-07-01T14:48:45.040 回答