现在我有两个文件:A和B.两个都是csv文件。
csv A有一些数据:
a b c 1 2 3 4 5 6 7 8 9 .....
csv B有一些数据:
b d 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(file_name): open_dict={} key_list=[] fd=csv.reader(open(file_name,'r')) j=1 for line in fd: data_len=len(line) if not j: try: for i in range(data_len): open_dict[key_list[i]].append(line[i]) except: #print line continue else: for i in range(data_len): key=line[i] key_list.append(key) for i in range(data_len): open_dict[key_list[data_len-i-1]]=[] j=0 continue return open_dict
我使用dict来阅读它们,如果它相等,我想键入组合
但我不知道该怎么做
注意:数据超过一百万行。
答案 0 :(得分:1)
我强烈建议您使用pandas
来执行此操作,它为Python提供了高性能,易于使用的数据结构和数据分析工具。所以你可以尝试处理大数据。
e.g。
>>> 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)
out.csv:
a,b,c,d
1,2,3,1.0
4,5,6,
7,8,9,3.0
答案 1 :(得分: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