python中dtypes_关于python:如何通过pandas DataFrame中的列设置dtypes
我想将一些数据带入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相关推荐
- python dataframe增加一行_python - 在pandas.DataFrame中添加一行
python - 在pandas.DataFrame中添加一行 据我所知,pandas旨在加载完全填充的DataFrame,但我需要创建一个空的DataFrame,然后逐个添加行.做这个的最好方式是什 ...
- python交换两列的位置_如何更改 pandas dataframe 中两列的位置
如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...
- python将scikit-learn自带数据集转换为pandas dataframe格式
python将scikit-learn自带数据集转换为pandas dataframe格式 目录 python将scikit-learn自带数据集转换为pandas dataframe格式 #仿真数据
- 在Pandas DataFrame中重塑数据
目录 介绍 透视Pandas DataFrame 在Pandas DataFrame中对数据进行分组 总结 使用我们的数据集后,我们将快速查看可以使用流行的Python库从数据集轻松创建的可视化,然后 ...
- 清理Pandas DataFrame中的数据
目录 介绍 清理按键 查找不一致的数据 总结 确保整个DataFrame一致是很重要的.这包括确保数据的类型正确,消除不一致之处并标准化值. 下载CSV和数据库文件-127.8 KB 下载源代码122 ...
- 一文搞懂Pandas Dataframe中的apply方法
告诉你如何在Pandas数据框架中使用apply()的方法. 扫码关注<Python学研大本营>,加入读者群,分享更多精彩 热点 在这篇文章中,我们将探索如何在DataFrame中使用ap ...
- pandas dataframe 中 explode()函数用法及效果
最近在使用pyspark处理数据,需要连接各种各样的表和字段,因此记录相关函数的使用情况.今天介绍explode(). 1. explode()函数简介 explode 函数是 pan ...
- pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换、即一次性同时对多个值进行替换操作
pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换.即一次性同时对多个值进行替换操作 目录
- pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换、替换具体数据列的相关值
pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换.替换具体数据列的相关值 目录
- pandas dataframe中的列进行重新排序、倒排、正排、自定义排序详解及实践
pandas dataframe中的列进行重新排序,pandas dataframe列重排.倒排.正排.自定义排序详解及实践 实施数据构建: import pandas as pd import nu ...
最新文章
- Kickstart配置文件解析
- 江苏关于领取软考2021年上半年合格证书的通知
- AOJ 0118: Property Distribution (简单DFS)
- 安全测试基础 -- 概述【转载】
- 关于相对布局RelativeLayout的各种属性介绍
- windows终止处理程序( __try __finally) 简单解析
- eclipse--python开发环境搭建
- 谷歌、脸书、魔兽世界都在用!InnoDB是什么?有哪些关键特性?
- sql视图 权限_《MySQL必知必会》学习笔记 8 使用视图
- linux 手动控制cpu转速,Linux 手动计算CPU使用率
- ar nm ldd 静态库 动态库
- 走近网球运动·与棒球相似的体育项目·第一堂棒球课
- android内存取证,CTF内存取证入门(以安洵杯为例)
- 功放与喇叭的匹配原则
- DSAC、DSAC++、DSAC*
- BackTrack5完全配置
- java毕业生设计养老机构服务信息管理计算机源码+系统+mysql+调试部署+lw
- android studio中清除代码中的无效引用
- Linux 裁剪并交叉编译openssl库
- Windows10下配置JavaCup、JFlex及运行JavaCup测试用例
热门文章
- 求职过程记录(5)——黎明到来
- angular 代码高亮_angular 搜索/查找关键字高亮
- a标签 vue 动态点击_vue实现a标签点击高亮方法
- java序列化 jar_使用序列化将对象传递给另一个JVM – 相同的Java版本和jar(都运行我们的应用程序)...
- vuefullcalendar怎么判断切换上下月_六种区分对联上下联的方法
- 如何使用计算机模拟函数图像,模拟图像
- 移动端web设计尺寸_移动端页面设计规范尺寸大起底
- Matlab中gradient函数的使用方法
- 【Python】调用百度云API人脸检测 Face Detect
- 【功率控制】无线光通信-CDMA中闭环链路的功率控制MATLAB仿真