我正在运行一个一直为我工作的代码.这次我在2个.csv文件上运行它:"data"(24 MB)和"data1"(475 MB)."data"有3列,每列约680000个元素,而"data1"有3列,每列33000000个元素.当我运行代码时,经过大约5分钟的处理后,我就会被"杀死:9".如果这是一个内存问题,如何解决呢?欢迎任何建议!
这是代码:
import csv
import numpy as np
from collections import OrderedDict # to save keys order
from numpy import genfromtxt
my_data = genfromtxt('data.csv', dtype='S',
delimiter=',', skip_header=1)
my_data1 = genfromtxt('data1.csv', dtype='S',
delimiter=',', skip_header=1)
d= OrderedDict((rows[2],rows[1]) for rows in my_data)
d1= dict((rows[0],rows[1]) for rows in my_data1)
dset = set(d) # returns keys
d1set = set(d1)
d_match = dset.intersection(d1) # returns matched keys
import sys
sys.stdout = open("rs_pos_ref_alt.csv", "w")
for row in my_data:
if row[2] in d_match:
print [row[1], row[2]] …Run Code Online (Sandbox Code Playgroud) 我有2个词典,A和B. A有700000个键值对,B有560000个键值对.来自B的所有键值对都存在于A中,但A中的某些键是具有不同值的重复项,而某些键具有重复值但是唯一键.我想从A中减去B,所以我可以得到剩余的140000个键值对.当我根据键标识减去键值对时,由于重复键,我删除了150000个键值对.我想根据每个键值对的BOTH键和值的标识减去键值对,所以我得到140000.任何建议都是受欢迎的.
这是一个例子:
A = {'10':1, '11':1, '12':1, '10':2, '11':2, '11':3}
B = {'11':1, '11':2}
Run Code Online (Sandbox Code Playgroud)
我想得到:AB = {'10':1,'12':1,'10':2,'11':3}
我不想得到:
a)基于密钥时:
{'10':1, '12':1, '10':2}
Run Code Online (Sandbox Code Playgroud)
要么
b)基于价值观:
{'11':3}
Run Code Online (Sandbox Code Playgroud) 我在R中有一个很大的data.frame,其过度简化的版本看起来像这样(真正的data.frame在"Color"列中有20种颜色,在"Number"列中有10种不同的数字:
Color Number Y
blue 1 5
blue 2 3
blue 3 2
red 1 5
red 2 8
red 3 2
green 1 2
green 2 9
green 3 3
Run Code Online (Sandbox Code Playgroud)
对于"颜色"中的每种颜色,我想通过比较"Y"列的相应值,在"数字"列中的所有数字组合之间应用函数.让我们以一个简单的函数为例:
if x >= y, print 1, else print 0 # where x and y represent the first and second values to be compared, respectively
Run Code Online (Sandbox Code Playgroud)
我会将此作为输出data.frame获取:
Color Comparison Y
blue 1_vs_2 1
blue 1_vs_3 1
blue 2_vs_1 0
blue 2_vs_3 1
blue 3_vs_1 0
blue 3_vs_2 0
red 1_vs_2 …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的输入.txt这种形式的文件:
0 1 0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想删除所有空行,以便创建一个新的输出.txt文件,如下所示:
0 1 0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我尝试用grep做:
grep -v '^$' test1.txt > test2.txt
Run Code Online (Sandbox Code Playgroud)
但我得到"SyntaxError:无效的语法"
当我按照某人的建议使用pandas时,我得到不同数量的列,并且一些整数被转换为浮点数:例如:1.0而不是1
当我按照督察G4dget的建议(见下文)时,它工作得很好,只有一个问题:最后一行没有完全打印:
with open('path/to/file') as infile, open('output.txt', 'w') as outfile: …Run Code Online (Sandbox Code Playgroud)