2017-07-15 40 views
1

直接的问题 - 我做了以下内容:数据帧的加快熊猫CSV阅读并随后垂头丧气

train_set = pd.read_csv('./input/train_1.csv').fillna(0) 
for col in train_set.columns[1:]: 
    train_set[col] = pd.to_numeric(train_set[col],downcast='integer') 

第一列是一个字符串 - 其余的都是整数。 Read_csv给出了我不需要的花车。降采样导致RAM使用量减少了将近50%,但显着降低了处理速度。我能一步完成整个事情吗?还是有人知道如何多线程?
THX

回答

3

我建议您尝试这两个函数,看看再次表现:

  1. 转换,当你阅读文件

    # or uint8/int16/int64 depends on your data 
    pd.read_csv('input.txt', sep=' ', dtype=np.int32) 
    
    # or you can use converters with lambda function 
    pd.read_csv('test.csv', sep=' ', converters={'1':lambda x : int(x)}) 
    
  2. 将您的数据帧读取文件

    df['MyColumnName'] = df['MyColumnName'].astype(int)

+0

嗯我看到的想法,但问题是,第一行是一个字符串。在读取过程中指定dtype不适用于字符串。你会分开阅读吗?我们可以保存订单吗? – dv3

+0

我编辑了代码。转换器也为我工作 – imanzabet

+0

正确 - 代码再次工作,但不能解决问题。这会将名称为'1'的列转换为整数。我把第一列作为一个字符串,其余的(总共551)作为花车,我想转换。 – dv3