-1

现在我有两个文件:A 和 B。两者都是 csv 文件。

csv A 有一些数据:

美国广播公司
1 2 3
4 5 6
7 8 9
......

csv B 有一些数据:

BD
7 0
8 3
2 1
......

现在我想将两个 csv 文件 A 和 B 组合成一个新文件 C,如下所示:

A B C D
1 2 3 1
7 8 9 3
……

首先我必须用 csv.reader 读取文件,代码是这样的:

    def open_func(文件名):
    open_dict={}
    key_list=[]
    fd=csv.reader(open(file_name,'r'))
    j=1
    对于 fd 中的行:
        data_len=len(线)
        如果不是 j:
            尝试:
                对于我在范围内(data_len):
                    open_dict[key_list[i]].append(line[i])
            除了:
                #打印线
                继续            
        别的:  
            对于我在范围内(data_len):
                键=线[i]
                key_list.append(键)
            对于我在范围内(data_len):
                open_dict[key_list[data_len-i-1]]=[]
            j=0
            继续
    返回 open_dict


我使用 dict 读取它们,如果相等,我想键组合

但我不知道该怎么做

注意:数据超过一百万行。

4

2 回答 2

1

我强烈建议您使用pandas它来执行此操作,它为 Python 提供了高性能、易于使用的数据结构和数据分析工具。所以你可以尝试它来处理大数据。

例如

>>> import pandas as pd
>>> f1 = pd.DataFrame({'a':[1,4,7], 'b':[2,5,8], 'c':[3,6,9]})
>>> f2 = pd.DataFrame({'b':[7,8,2], 'd':[0,3,1]})
>>> f = f1.merge(f2, how='left', on='b')
>>> f
   a  b  c    d
0  1  2  3  1.0
1  4  5  6  NaN
2  7  8  9  3.0

或从 csv 读取文件:

f1 = pd.read_csv('1.csv',sep="\s+")
f2 = pd.read_csv('2.csv',sep="\s+")

您可以通过以下方式将其写入文件:

f.to_csv('out.csv', index=False)

出.csv:

a,b,c,d
1,2,3,1.0
4,5,6,
7,8,9,3.0
于 2017-05-15T02:57:34.787 回答
0

pandas.read_csv使这相当容易:

代码:

import pandas as pd

df1 = pd.read_csv('file1', sep='\s+')
df2 = pd.read_csv('file2', sep='\s+')

df = df1.merge(df2, on=['b'])
print(df)

结果:

   a  b  c  d
0  1  2  3  1
1  7  8  9  3
于 2017-05-15T03:01:43.170 回答