python - Pandas:如何使用新的可空字符串和 int 类型构造具有指定类型的 DataFrame?
问题描述
我想用新的可为空的标量类型创建一个 DataFrame 。我正在使用熊猫 1.0.3。
给定进口:
import numpy as np
import pandas as pd
from collections import OrderedDict
如果我有列名:
headers = ['field',
'yr_code',
'start_col',
'end_col',
'year',
'variable_name',
'characteristics',
'source',
'date_on']
和数据类型:
dt = [pd.StringDtype(),
pd.Int64Dtype(),
np.int16,
np.numpy.int16,
pd.Int64Dtype(),
pd.StringDtype(),
pd.StringDtype(),
pd.StringDtype(),
pd.StringDtype()]
我尝试将列规范创建为:
columns = OrderedDict((h, dt[i]) for i, h in enumerate(headers))
和一个数据框(带有示例数据):
data = [['F00001', pd.NA, 1, 1, '', 'Blank', '', pd.NA, pd.NA]]
f = pd.DataFrame(data, columns = columns)
不幸的是,这似乎不起作用:
>>> f.dtypes
field object
yr_code object
start_col int64
end_col int64
year object
variable_name object
characteristics object
source object
date_on object
dtype: object
我知道这dtypes
可能会返回底层类型,但yr_code
作为对象肯定是错误的。如何为这些类型正确创建 DataFrame?
解决方案
你可以做得到f.convert_dtypes()
:
>>> f.convert_dtypes().dtypes
field string
yr_code object
start_col Int64
end_col Int64
year string
variable_name string
characteristics string
source object
date_on object
推荐阅读
- flask - 烧瓶@app.route('/你好/
') 404 未找到 - angular - 显示基于 url Angular 7 的组件
- node.js - vs code:调试在nodejs中运行的打字稿,同时指定源根
- python - 在 linux 中导入 python 版本 3.7.4 中的 theano 库时出错
- sql - SQL将两个带有键的表连接到不同的列
- android - 如何使用图案或密码制作应用程序锁定应用程序
- c++ - 覆盖函数但保留对原始函数的引用
- php - Symfony entitymanager 拒绝插入一列
- python - NLP - 从句子中查找关键字
- javascript - 如何通过 screen.availWidth (而不是平板电脑、笔记本电脑等)准确检测手机是否