python - Pandas 脚本在尝试合并两个文件时被杀死
问题描述
我想根据两个数据框中的键合并两个文件。第一个 csv 文件有 36k 行 第二个 csv 文件有 2.18 亿行
第一个 csv 我喜欢:
A
123
234
第二个csv就像:
A|B|C|D|E|F|G|H
123|xxx|yyy|www|qqq|aaa|kkk|ttt
123|vvv|ttt|rrr|ooo|bbb|lll|eee
123|ccc|zzz|ttt|ooo|nnn|ppp|fff
987|hhh|dfz|dfg|mmm|nlk|pfp|fww
合并文件后我想要的结果如下:
123|xxx|yyy|www|qqq|aaa|kkk|ttt
123|vvv|ttt|rrr|ooo|bbb|lll|eee
123|ccc|zzz|ttt|ooo|nnn|ppp|fff
因为我想在文件二中找到文件一的所有出现并返回整行。
我的代码如下:
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv', sep = '|')
merge = df1.merge(df2, how='inner', on = 'A')
但它崩溃了,因为我猜没有内存来处理大文件。我该如何解决这个问题?有没有更好的方法来处理大文件。
我实现了一个 for 循环,但它需要很长时间:
list = [123,897] #this list comes from file 1
newfile = open('newfile.csv', 'w')
newfile.write('A|B|C|D|E|F|G|H')
newfile.write('\n')
input = csv.reader(open(file2.csv, 'r'), delimiter = '|')
for row in input:
for i in range(0, len(list)):
if list[i] == row[0]:
newfile.write(row[0] + '|' + row[1] + '|' + row[2] + '|' + row[3] + '|' + row[4] + '|' + row[5] + '|' + row[6] + '|' + row[7])
newfile.write('\n')
我想在熊猫中解决它,但现在欢迎任何建议。提前致谢。
解决方案
推荐阅读
- c - 比所需的 FtpPutFile() 更快的通信方式
- performance - 7-1 模式对性能不利吗?
- flutter - 如何在 Dart 中为嵌套 Map 创建接口(类)
- python - 如何避免 Pandas 中的警告?
- go - 在 Go 中处理带有引用的切片是否存在错误?
- php - PHP - 将命令行输出发送到动态命名的文件
- php - PHP - 如何获取数字数组
- vb.net - 从 VB.Net 将文本值作为参数传递给 Crystal Report 公式字段时出错
- apache-kafka - 使用 Jmx Exporter for Prometheus 缺少 Confluent Kafka Connect 指标
- javascript - 带有聚光灯的 phong 材料的平面阴影