如何解决多个块同时pandas大数据
我正在尝试使用块来连接两个超大 (>800GiB) 文件并对其进行操作。
文件看起来像:
文件 1
1 1 0.5
1 2 0.2
2 2 0.4
2 3 0.2...
文件 2
1 1 0.6
1 2 0.3
2 2 0.6
2 3 0.7...
我想要的结果是文件:
1 2 0.2 0.3
2 3 0.2 0.7...
我尝试了不同的块代码,但找不到选项:从两者读取 5000 条记录,继续,保存到文件,然后从两者中的下一个 5000 条开始。
大约代码:
mode="w"
file1=pd.read_csv('test1.csv',delim_whitespace=True,header=None,chunksize=5000)
file2=pd.read_csv('test2.csv',chunksize=5000)
for chunk in file1:
for chunk1 in file2:
un_file1=chunk[chunk[0]!=chunk[1]]
un_file2=chunk1[chunk1[0]!=chunk1[1]]
conc=pd.concat([un_file2,un_file2[2]],axis=1)
conc.to_csv(r'test_test.csv',header=False,index=False,sep=" ",mode=mode)
mode="a"
因此在当前代码中,文件 2 中的所有块都连接到文件 1 的第一个块 =(
解决方法
这是一种从每个文件中迭代读取一个块,然后合并它们的方法:
Map<Object,Object> test = new HashMap<>();
new Thread() {
@Override
public void run() {
for (;;)
test.put(Math.random(),Math.random());
}
}.start();
for (;;)
for (Entry<Object,Object> e : test.entrySet())
System.out.println(e);
尽管如此大小的文件仍然需要一段时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。