阅读-->;修改-->;使用Pandas编写大型.csv文件

阅读-->;修改-->;使用Pandas编写大型.csv文件,pandas,Pandas,我正在尽可能高效地修改大型.csv文件。我有一个大约有2000万行的文件,我想对它进行一些更改,为Tableau可视化做准备: 1) 选择相关列 2) 重命名列 3) 解析日期 4) 创建简单列(将两个字段合并为唯一ID并添加整数列) 5) 再次导出到consolidated.csv(因此,除了初始标题外,我不希望有重复的标题,也不需要索引列) 我的笔记本电脑内存出错,所以我想学习如何使用chunksize读取文件,处理更改,然后导出到一个公共的.csv文件 df = pd.read_csv(r

我正在尽可能高效地修改大型.csv文件。我有一个大约有2000万行的文件,我想对它进行一些更改,为Tableau可视化做准备:

1) 选择相关列 2) 重命名列 3) 解析日期 4) 创建简单列(将两个字段合并为唯一ID并添加整数列) 5) 再次导出到consolidated.csv(因此,除了初始标题外,我不希望有重复的标题,也不需要索引列)

我的笔记本电脑内存出错,所以我想学习如何使用chunksize读取文件,处理更改,然后导出到一个公共的.csv文件

df = pd.read_csv(r'C:\Users\MyFile.csv.gz', dtype = 'str', chunksize = 10000, iterator=True, compression = 'gzip', usecols = ['EmployeeID', 'Created Date', 'InteractionID'])
df['Total']=1
df['UniqueID']= df['EmployeeID'] + df['InteractionID']
df['Short Date']= pd.to_datetime(df['Created Date'])
df['Short Date'] = df['Short Date'].apply(lambda x:x.date().strftime('%m%d%y'))
df['Roster ID'] = df['EmployeeID'] + df['Short Date'].map(str)
print('Modified successfully.')
combine=concat(df,ignore_index=True)#我知道这样的东西需要创建,但我不确定如何创建

combine.to_csv(r'C:\Users\test.csv', index= False, encoding = 'utf-8') #this would create the original file
原始样品:

InteractionID、创建日期、员工ID、重复日期

07927,04/01/2014 14:05:10912a,04/01/2014 14:50:03, 02158,04/01/2014 13:44:05172R,04/04/2014 17:47:29,
44279,04/01/2014 17:28:36217Y,04/07/2014 22:06:19

你只是在努力写下那部分吗?如果您只是想写出修改后的部分,则无需进行concat。基本上,您只需按常规写出第一个块,然后在每个后续块上将参数添加到
到_csv
mode='a',header=None
这将附加到现有的csv,而不会像第一次那样再次写出头。我在尝试修改文件时出错(在块中添加列等). TypeError:“TextFileReader”对象不支持项目分配,我的图片方式是,我选择像10000行(chunksize=10000),然后我的计算机将为这10000行添加列、重命名等。然后,它将移动到下一个10000。CSV使用简单的行迭代器和字符串处理并完全绕过pandas,几乎可以肯定这会更快更容易地完成。