python - 熊猫 to_numeric 不投射空数据帧
问题描述
我需要一个包含所有 dtypes 子集的数据框np.number
。to_numeric 函数允许我对包含一些数据的数据帧执行此操作。作为一个极端情况,我用一个空的数据框测试它,它似乎不起作用。
import numpy as np
import pandas as pd
df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
df = df.apply(pd.to_numeric, errors='coerce')
print(df.dtypes)
给我输出
col1 object
col2 object
col3 object
dtype: object
我期望的地方
col1 int64
col2 int64
col3 int64
dtype: object
如果我填充数据框,那么问题就会消失:
df = pd.DataFrame({'col1': [1, 2], 'col2': [1, 2], 'col3': [1, 2]})
df = df.apply(pd.to_numeric, errors='coerce')
print(df.dtypes)
给了我预期的输出。
有人可以解释这种不同的行为,并提出解决方法。除非需要,否则我不想明确检查数据框是否有数据。
我正在使用python 3.6.1
解决方案
使用astype似乎可以实现
df=df.astype("int64")
您还可以为每一列显式分配类型
df = pd.DataFrame({'col1':pd.Series([], dtype='int'),
'col2':pd.Series([], dtype='int'),
'col3':pd.Series([], dtype='int')})
print(df.dtypes)
col1 int64
col2 int64
col3 int64
dtype: object
推荐阅读
- vue.js - Vuex 不提供名为“createStore”的导出
- google-apps-script - 谷歌阻止了谷歌电子表格插件
- information-retrieval - 在密集检索场景中利用术语权重
- python - 在 python 中处理 selenium 异常和 alertbox
- npm - 如何更新 node_modules 中的包
- python-3.x - 如何在 Linux 上安装 Python 包,以便已经工作的 PostgreSQL 13 plpython3u 扩展可以找到它?
- git - 在 git fetch 和 reset 之后,错误的远程是默认的
- python - 在数组中的连续值之间插入计算值
- php - 我在使用 laravel8 添加新回复时遇到问题
- windows - 为什么 WinDBG 可以在 nt!NtCreateFile 而不是 nt!NtAccessCheck 或 nt!SeAccessCheckByType 上中断?