首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在熊猫DataFrame中按列设置类型

如何在熊猫DataFrame中按列设置类型
EN

Stack Overflow用户
提问于 2014-09-01 17:27:36
回答 4查看 44.4K关注 0票数 54

我想把一些数据带到熊猫DataFrame中,我想为导入的每一列指定dtype。我希望能够对具有许多不同列的较大数据集这样做,但是,作为一个例子:

代码语言:javascript
运行
复制
myarray = np.random.randint(0,5,size=(2,2))
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype=[float,int])
mydf.dtypes

在以下方面的成果:

TypeError:数据类型不被理解

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

代码语言:javascript
运行
复制
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': int})

TypeError:类型为“type”的对象没有len()

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

最后,我只想给它传递一个数据类型列表,就像传递一个列名列表一样。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-05 18:48:31

对于熊猫版本0.24.2 (当前的稳定版本),不可能将数据类型的显式列表作为docs状态传递给DataFrame构造函数:

代码语言:javascript
运行
复制
dtype : dtype, default None

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

但是,dataframe类确实有一个静态方法,允许您将numpy结构化数组转换为dataframe,以便您可以这样做:

代码语言:javascript
运行
复制
>>> 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
票数 11
EN

Stack Overflow用户

发布于 2016-08-03 17:46:08

我刚碰到这个,熊猫的问题还没解决,所以我在发我的解决办法。假设df是我的DataFrame,而dtype是一个将列名映射到类型的dict:

代码语言:javascript
运行
复制
for k, v in dtype.items():
    df[k] = df[k].astype(v)

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

供参考:

票数 26
EN

Stack Overflow用户

发布于 2017-09-28 13:43:52

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

代码语言:javascript
运行
复制
df = pd.DataFrame({'column1':pd.Series(data1, dtype='type1'),
                   'column2':pd.Series(data2, dtype='type2')})

并以数据为例:

代码语言:javascript
运行
复制
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
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25610592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档