如何在熊猫中合并大型csv文件?

时间:2019-07-23 16:27:41

标签: python pandas dataframe

csv中有一些文件。

示例: first.csv:

    a     b     c     d    pos   chrom
    31   412   544   233    44234  1
    23   4f3   515   141    551    2
    dsf  3rs   2321  512    51     5 
    123   22   123   5155   2355   1
   ...

second.csv

    a     Name     d    position   chrom
    31   dasf    233    34244      1
    23   faf     521    551        2
    dsf  gdsg    422    321        5 
    123  dsgg    5155   2355       1
    ....

两个都有数千条记录。我需要找到具有相同位置的记录,然后以另一种方法处理它。 因此,我尝试通过在熊猫中加入inner来合并这些框架。

innerDF = pd.merge(first, second, how = 'inner', left_on = 'position', right_on='ars120_pos')

我遇到了内存错误。当然,我在搜索问题时发现了一些答案,但我对它们有疑问。

我不会使用dask,因为每次使用它时,我都会遇到差异错误。我看这是一辆越野车。

我在熊猫里发现了块状小费。我尝试使用它:

first  = pd.read_csv('/home/iso/Desktop/Work/Map/Ill/first.csv',sep = ',', chunksize = 1000, iterator= True)

temp = None
temp_chunk = None
for chunk1 in first:
    second = pd.read_csv('/home/iso/Desktop/Work/Map/ARS/second.csv', chunksize = 1000, iterator = True)
    for chunk2 in second:
        temp_chunk = pd.merge(chunk1, chunk2, left_on = 'pos', right_on='position', how = 'inner')
        temp = pd.concat([temp, temp_chunk])
    finalData = temp.drop_duplicates(keep='first')

但是,当我运行它时,代码正在编译几个小时,看起来好像已经冻结了。

可以告诉我,为什么第二次尝试不起作用?我在这里找到它。有人可以给我建议或链接到该任务的最佳实践吗?

0 个答案:

没有答案