首页 > 解决方案 > 如何创建具有特定 dtype 的新 Pandas 列?

问题描述

出于某种原因, dtype due_dateobject. 根据文档,我无法判断我的输入是否不正确。输入变量due_date是一个简单的字符串形式8/1/20

以下是相关行:

data_normalized.at[index, 'due_date'] = pd.to_datetime(due_date, format='%m/%d%Y', errors='ignore')
print(data_normalized['due_date'].dtype)
# output: object

我应该在at函数的某处设置列类型吗?

标签: pythonpandas

解决方案


这是因为您在某处执行循环并使用at. 这样做时,您的数据中几乎总是有混合类型。相反,请尝试执行以下操作:

data_normalized['due_date'] = pd.to_datetime(due_date, format='%m/%d%Y', errors='ignore')

如果没有您的实际/完整循环代码,我不确定您将如何更新整个系列。

请注意,如果循环是不可避免的,您可以在循环后转换整个系列 dtype

## looping
for index in data_normalized.index:
    data_normalized.at[index, 'due_date'] = pd.to_datetime(due_date, format='%m/%d%Y', errors='ignore')

## after loop
data_normalized['due_date'] = pd.to_datetime(data_normalized['due_date'])

推荐阅读