Python CSVkit比较CSV文件

vpfxa7rd  于 2023-01-15  发布在  Python
关注(0)|答案(2)|浏览(122)

我有两个CSV文件,看起来像这样..

CSV 1

reference  |  name  |  house
----------------------------
2348A      |  john  |  37
5648R      |  bill  |  3
RT48       |  kate  |  88
76A        |  harry |  433

第二阶段战斗部队

reference
---------
2348A
76A

使用Python和CSVkit,我试图通过将CSV1与CSV2进行比较来创建CSV1中行的输出CSV。有人能给我一个示例吗?

nnsrf1az

nnsrf1az1#

我建议使用pandas来实现您正在寻找的目标:
这里是如何简单,它将使用Pandas,考虑你的两个csv文件是这样的:

    • 一米一米一**
reference,name,house
2348A,john,37
5648R,bill,3
RT48,kate,88
76A,harry ,433
    • 一米二米一x**
reference
2348A
76A
    • 代码**
import pandas as pd
df1 = pd.read_csv(r'd:\temp\data1.csv')
df2 = pd.read_csv(r'd:\temp\data2.csv')
df3 = pd.merge(df1,df2, on= 'reference', how='inner')
df3.to_csv('outpt.csv')
    • 输出. csv**
,reference,name,house
0,2348A,john,37
1,76A,harry ,433
xienkqul

xienkqul2#

我建议使用以下工具:

      • csvjoin来自csvkit**或
  • "Pandas"
    • 解决方案1:**
pip install csvkit
$ csvjoin --help
usage: csvjoin [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
               [-p ESCAPECHAR] [-z MAXFIELDSIZE] [-e ENCODING] [-S] [-v] [-l]
               [--zero] [-c COLUMNS] [--outer] [--left] [--right]
               [FILE [FILE ...]]
    • 示例:[reference]的上的*联接
csvjoin --columns "reference" --left CSV1.csv CSV2.csv
    • 解决方案2:**

您还可以使用panda库,它更易于操作Dataframe和按列过滤。

import pandas as pd

df1 = pd.read_csv('CSV1.csv')
df2 = pd.read_csv('CSV2.csv')

df = df1[df1['reference'].isin(df2['reference'])]
df.to_csv('output.csv', index=False)

相关问题