我想将一些数据带入pandas DataFrame,并为导入时的每一列分配dtypes。 我希望能够对具有许多不同列的较大数据集执行此操作,但是,例如:

myarray = np.random.randint(0,5,size=(2,2))

mydf = pd.DataFrame(myarray,columns=['a','b'], dtype=[float,int])

mydf.dtypes

结果是:

TypeError: data type not understood

我尝试了其他一些方法,例如:

mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': int})

TypeError: object of type 'type' has no len()

如果我放dtype=(float,int),它将浮点格式应用于两列。

最后,我希望能够将其传递给数据类型列表,就像我将其传递给列名称列表一样。

dtype的参数应该是有效的numpy dtype(并且不支持结构化dtype),因此列表或字典将不起作用。 一种可能的方法是分别为每个列进行分类。 或者首先创建一个结构化的numpy数组,并将其提供给DataFrame。

我知道我可以在循环中分别分配每个对象,但令我惊讶的是dtype =不够灵活,无法容纳列表。 不过感谢您的回答,很高兴得到确认:)

github.com/pydata/pandas/issues/4464目前是一个未解决的问题(如果您想执行拉取请求,那就太好了)

只是为了好玩:有人使用read_csv解决了这个问题:stackoverflow.com/a/38524255/6646912:D

我刚遇到这个问题,而熊猫问题仍未解决,所以我发布了解决方法。假设df是我的DataFrame,而dtype是将列名称映射到类型的字典:

for k, v in dtype.items():

df[k] = df[k].astype(v)

(注意:在python 2中使用dtype.iteritems())

供参考:

允许的数据类型列表(NumPy dtypes):https://docs.scipy.org/doc/numpy-1.12.0/reference/arrays.dtypes.html

熊猫还支持其他一些类型。例如category:http://pandas.pydata.org/pandas-docs/stable/categorical.html

相关的GitHub问题:https://github.com/pandas-dev/pandas/issues/9287

我需要使用for k, v in dtype.iteritems():才能正常工作。

可以将其更改为df.astype(dtype)

对于某些类型转换,此方法严重失败:stackoverflow.com/questions/54393266/

您可能希望尝试将Series对象的字典传递给DataFrame构造函数-它会为您提供对创建的更多具体控制,并且希望可以更清楚地了解发生了什么。模板版本(data1可以是数组等):

df = pd.DataFrame({'column1':pd.Series(data1, dtype='type1'),

'column2':pd.Series(data2, dtype='type2')})

并举例说明数据:

df = pd.DataFrame({'A':pd.Series([1,2,3], dtype='int'),

'B':pd.Series([7,8,9], dtype='float')})

print (df)

A  B

0  1  7.0

1  2  8.0

2  3  9.0

print (df.dtypes)

A     int32

B    float64

dtype: object

从pandas 0.24.2版本(当前的稳定版本)开始,无法将docs类型的数据类型的显式列表传递给DataFrame构造函数:

dtype : dtype, default None

Data type to force. Only a single dtype is allowed. If None, infer

但是,dataframe类确实具有静态方法,允许您将numpy结构化数组转换为数据框,因此您可以执行以下操作:

>>> myarray = np.random.randint(0,5,size=(2,2))

>>> record = np.array(map(tuple,myarray),dtype=[('a',np.float),('b',np.int)])

>>> mydf = pd.DataFrame.from_records(record)

>>> mydf.dtypes

a    float64

b      int64

dtype: object

在处理数据类型时,应将它们作为字符串传递。

例如,您遵循的后一种方法应修改为

mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': **'int'**})

代替

mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': **int**})。

dtype (int, float etc.)应该以字符串形式给出。

或者作为替代方法(如果您不想作为字符串传递)

将numpy导入为np并使用

mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': **np.int**})

我不明白为什么**在那里。 那是不正确的语法。 将它们取出,放在mydf = pd.DataFrame(myarray,columns=[a,b], dtype={a: **np.int**})的最后一行,它仍然不起作用:它给出了TypeError: data type not understood。

python中dtypes_关于python:如何通过pandas DataFrame中的列设置dtypes相关推荐

  1. python dataframe增加一行_python - 在pandas.DataFrame中添加一行

    python - 在pandas.DataFrame中添加一行 据我所知,pandas旨在加载完全填充的DataFrame,但我需要创建一个空的DataFrame,然后逐个添加行.做这个的最好方式是什 ...

  2. python交换两列的位置_如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...

  3. python将scikit-learn自带数据集转换为pandas dataframe格式

    python将scikit-learn自带数据集转换为pandas dataframe格式 目录 python将scikit-learn自带数据集转换为pandas dataframe格式 #仿真数据

  4. 在Pandas DataFrame中重塑数据

    目录 介绍 透视Pandas DataFrame 在Pandas DataFrame中对数据进行分组 总结 使用我们的数据集后,我们将快速查看可以使用流行的Python库从数据集轻松创建的可视化,然后 ...

  5. 清理Pandas DataFrame中的数据

    目录 介绍 清理按键 查找不一致的数据 总结 确保整个DataFrame一致是很重要的.这包括确保数据的类型正确,消除不一致之处并标准化值. 下载CSV和数据库文件-127.8 KB 下载源代码122 ...

  6. 一文搞懂Pandas Dataframe中的apply方法

    告诉你如何在Pandas数据框架中使用apply()的方法. 扫码关注<Python学研大本营>,加入读者群,分享更多精彩 热点 在这篇文章中,我们将探索如何在DataFrame中使用ap ...

  7. pandas dataframe 中 explode()函数用法及效果

            最近在使用pyspark处理数据,需要连接各种各样的表和字段,因此记录相关函数的使用情况.今天介绍explode(). 1. explode()函数简介 explode 函数是 pan ...

  8. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换、即一次性同时对多个值进行替换操作

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换.即一次性同时对多个值进行替换操作 目录

  9. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换、替换具体数据列的相关值

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换.替换具体数据列的相关值 目录

  10. pandas dataframe中的列进行重新排序、倒排、正排、自定义排序详解及实践

    pandas dataframe中的列进行重新排序,pandas dataframe列重排.倒排.正排.自定义排序详解及实践 实施数据构建: import pandas as pd import nu ...

最新文章

  1. Kickstart配置文件解析
  2. 江苏关于领取软考2021年上半年合格证书的通知
  3. AOJ 0118: Property Distribution (简单DFS)
  4. 安全测试基础 -- 概述【转载】
  5. 关于相对布局RelativeLayout的各种属性介绍
  6. windows终止处理程序( __try __finally) 简单解析
  7. eclipse--python开发环境搭建
  8. 谷歌、脸书、魔兽世界都在用!InnoDB是什么?有哪些关键特性?
  9. sql视图 权限_《MySQL必知必会》学习笔记 8 使用视图
  10. linux 手动控制cpu转速,Linux 手动计算CPU使用率
  11. ar nm ldd 静态库 动态库
  12. 走近网球运动·与棒球相似的体育项目·第一堂棒球课
  13. android内存取证,CTF内存取证入门(以安洵杯为例)
  14. 功放与喇叭的匹配原则
  15. DSAC、DSAC++、DSAC*
  16. BackTrack5完全配置
  17. java毕业生设计养老机构服务信息管理计算机源码+系统+mysql+调试部署+lw
  18. android studio中清除代码中的无效引用
  19. Linux 裁剪并交叉编译openssl库
  20. Windows10下配置JavaCup、JFlex及运行JavaCup测试用例

热门文章

  1. 求职过程记录(5)——黎明到来
  2. angular 代码高亮_angular 搜索/查找关键字高亮
  3. a标签 vue 动态点击_vue实现a标签点击高亮方法
  4. java序列化 jar_使用序列化将对象传递给另一个JVM – 相同的Java版本和jar(都运行我们的应用程序)...
  5. vuefullcalendar怎么判断切换上下月_六种区分对联上下联的方法
  6. 如何使用计算机模拟函数图像,模拟图像
  7. 移动端web设计尺寸_移动端页面设计规范尺寸大起底
  8. Matlab中gradient函数的使用方法
  9. 【Python】调用百度云API人脸检测 Face Detect
  10. 【功率控制】无线光通信-CDMA中闭环链路的功率控制MATLAB仿真