首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在pandas中基于列索引定义csv文件导入过程中的数据类型

在pandas中基于列索引定义csv文件导入过程中的数据类型
EN

Stack Overflow用户
提问于 2018-10-24 05:53:47
回答 2查看 4.9K关注 0票数 3

我需要导入一个包含300+列的csv文件,在这些列中,只有第一列需要指定为类别,而其余的列应该是32或更少的浮点数。我猜我可以通过列索引指定列的数据类型。我的问题是:根据列索引指定数据类型的最佳方式是什么?

代码语言:javascript
复制
Col_A   Col_B   Col_C   Col_D
001       1       2      1.2
002       2       3      3.5
003       3       4.5      7
004       4       6.5     10

我尝试的代码是:

代码语言:javascript
复制
df = pd.read_csv(path, low_memory=False,  
             dtype={'Col_A': 'category', [2:]: np.float32)}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-24 06:14:31

读取两次,第一次获取所有列,第二次读取时指定dtype。

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
df.to_csv('tmp.csv',index=False)

path = 'tmp.csv'
df =pd.read_csv(path)
type_dict = {}

for key in df.columns:
    if key == 'A':
        type_dict[key]='category'
    else:
        type_dict[key]=np.float32
df = pd.read_csv(path,dtype=type_dict)
print(df.dtypes)
票数 0
EN

Stack Overflow用户

发布于 2018-10-24 06:21:49

我认为以下几点可以达到目的:

代码语言:javascript
复制
df = pd.read_csv(path, low_memory=False, dtype={'Col_A':'category'})

或者,如果您知道它将是第一列:

代码语言:javascript
复制
df = pd.read_csv(path, low_memory=False, dtype={0:'category'})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52958349

复制
相关文章

相似问题

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