我需要导入一个包含300+列的csv文件,在这些列中,只有第一列需要指定为类别,而其余的列应该是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)}
发布于 2018-10-24 06:14:31
读取两次,第一次获取所有列,第二次读取时指定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)
发布于 2018-10-24 06:21:49
我认为以下几点可以达到目的:
df = pd.read_csv(path, low_memory=False, dtype={'Col_A':'category'})
或者,如果您知道它将是第一列:
df = pd.read_csv(path, low_memory=False, dtype={0:'category'})
https://stackoverflow.com/questions/52958349
复制相似问题