python - 当组列仅包含 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
?
解决方案
推荐阅读
- python - Intersection from different keys inside Python dictionary
- r - 如何将数据框划分为新的数据框(如新数据1、数据2、数据3 ..等等),以便我可以分析它们中的每一个(如T检验)
- gatsby - 在数组中传递静态查询数据
- sql-server - 哪个更适合托管在 Azure 上的 MSSQL,CPU 或 RAM 的成本更高?
- typescript - Ionic 4 在从 http 请求调用返回的对象键上抛出错误
- java - 我在向服务器发送凌空请求时遇到了一些错误......任何人都可以帮助我
- ios - 如何适应不同的屏幕尺寸
- sql - 无法在合并中绑定多部分标识符
- python-3.x - 没有名为“pptx”的模块
- java - 使用来自主题的消息并使用指数退避重试,直到使用 Spring-Kafka-2.3.0 及更高版本成功