【问题标题】:Join 2 text file data based on a column value根据列值连接 2 个文本文件数据
【发布时间】:2020-04-08 22:14:50
【问题描述】:

如何使用python实现2个文本文件的连接并输出第三个文件,但只添加一个文件中存在的值,并且在第二个文件中具有相应的匹配值?

输入 File1.txt:

GameScore|KeyNumber|Order

85|2568909|2|

84|2672828|1|

80|2689999|5|

65|2123232|3|

输入 File2.txt:

KeyName|RecordNumber

安迪|2568909|

约翰|2672828|

安迪|2672828|

梅根|1000021|

必需的输出文件 3.txt:

KeyName|KeyNumber|GameScore|Order

安迪|2672828|84|1|

安迪|2568909|85|2|

约翰|2672828|84|1|

梅根|1000021||

在文件 2 中查找键名和记录编号,并将其与文件 1 中的 KeyNumber 匹配,并复制相应的游戏分数和顺序值。

这些文件有 1 到 500000 条记录,因此需要能够运行大量记录。

编辑:我无权访问 pandas 等任何库,也不允许安装任何库。

基本上需要运行一个 cmd 来触发一个程序,该程序读取 2 个文件,比较并生成第三个文件。

【问题讨论】:

    标签: python file-handling


    【解决方案1】:

    您可以使用 pandas 来执行此操作:

    import pandas as pd
    
    df1 = pd.read_csv('Input File1.txt', sep='|')
    df2 = pd.read_csv('Input File2.txt', sep='|', header=0, names=['KeyName', 'KeyNumber'])
    
    df3 = df1.merge(df2, on='KeyNumber', how='right')
    

    请参阅documentation 进行微调。

    【讨论】:

    • 我无权访问任何库,如 pandas,也不允许安装任何库并仅使用文件操作。基本上需要运行一个 cmd 来触发一个程序来完成整个事情并生成第三个文件。
    • 嗯,也许您可​​以查看 pandas 的 merge 方法的源代码(可通过我上面链接到的文档访问),看看它是如何完成的?或者只是使用嵌套的for 循环从头开始编写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多