首页 > 解决方案 > 当组列仅包含 nan 值时,如何阻止 Pandas DataFrame.groupby() 将 dtype 从 object 更改为 float?

问题描述

当我运行以下代码时:

import numpy as np
import pandas as pd

df = pd.DataFrame({"S": ["xx", np.nan, np.nan], "V": [1.1,2.1,3.1]})
a = df.groupby(["S"], as_index=False, dropna=False).sum()
print(a.dtypes)

正如预期的那样,我得到以下结果:

S     object
V    float64

但是,如果我选择恰好包含nan值的行子集:

df2 = df.iloc[1:,:]
a2 = df2.groupby(["S"], as_index=False, dropna=False).sum()
print(a2.dtypes)

S结果 DataFrame 中的列被转换为浮点数,这会破坏后续代码。

S    float64
V    float64
dtype: object

有什么方法可以防止这种类型的推断并始终保持原始类型S

标签: pythonpandasnan

解决方案


推荐阅读