当前位置: 代码迷 >> python >> 基于列将两个文本文件映射到一个文件的有效方法
  详细解决方案

基于列将两个文本文件映射到一个文件的有效方法

热度:39   发布时间:2023-06-13 15:10:29.0

我有两个文本文件:

文件1:

Category ID

C1  A1
C2  A2
C3  A3  
C1  A4
C4  A5

档案2:

Purchase ID

O1  A1
O1  A2
O1  A3
O1  A4
O2  A5
O2  A6
O3  A7
O3  A2

我需要创建一个文件3:

O1 A1 C1
O1 A2 C2

等等。

文件1和文件2将非常大。

有人可以推荐一种有效的方法(而不是从文件1和文件2逐个搜索),可能是在python中。

但是其他语言也可以。 甚至excel都很好,如果可以使用?

任何形式的解决方案的任何线索将不胜感激。

在shell中使用join

join -j 2 -o 2.1 2.2 1.1 File1 File2
  • -j 2表示“在第二列上连接”
  • -o指定输出中各列的顺序, 2.1代表“文件2,第1列”

您可以使用以下awk命令来组合这两个文件:

awk 'FNR==NR{id[$2]=$1; next} {print $0, id[$2]}' file1 file2

Purchase ID Category
O1  A1 C1
O1  A2 C2
O1  A3 C3
O1  A4 C1
O2  A5 C4
O2  A6
O3  A7
O3  A2 C2

将2个文件导入数据库(例如SQLite)的2个表中,然后从T1中选择在T1.id = T2.id上加入T2。

sqlite shell可以设置csv或tabs模式。 (用逗号/制表符分隔。)输入和输出使用.import.once