根据熊猫中的列索引在csv文件导入期间定义数据类型

发布于 2021-01-29 15:04:46

我需要导入一个包含300多个列的csv文件,在这些列中,仅第一列需要指定为类别,而其余列应为float
32或更少。我猜想我可以通过列索引指定列的数据类型。我的问题是:基于列索引指定数据类型的最佳方法是什么?

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

我试过的代码是:

df = pd.read_csv(path, low_memory=False,  
             dtype={'Col_A': 'category', [2:]: np.float32)}
关注者
0
被浏览
66
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看