python合并两个数据不一致的文件



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

csv A 有一些数据:

阿 b c 1 2 3 4 5 6 7 8 9 .....

csv B 有一些数据:

b d 0 × 8 3 0 秒 .....

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

阿 b c d 1 2 3 1 7 8 9 3 ......

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

def open_func(file_name): open_dict={} key_list=[] fd=csv.reader(open(file_name,'r')) j=1 对于 FD 中的行: data_len=镜头(线) 如果不是 J: 尝试: 对于范围(data_len)中的i: open_dict[key_list[i]].append(line[i]) 除了: #print 线 继续            还:  对于范围(data_len)中的i: 键=线[i] key_list.追加(键) 对于范围(data_len)中的i: open_dict[key_list[data_len-i-1]]=[] j=0 继续 返回open_dict

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

但我不知道该怎么办

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

我强烈建议您使用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

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

最新更新