【问题标题】:How to identify duplicates in 2 columns of first and last name in 2 separate csv如何在 2 个单独的 csv 中识别 2 列名字和姓氏的重复项
【发布时间】:2020-03-30 15:28:48
【问题描述】:

我有两个不同的重复名称的单独 csv 文件,我想删除重复的名称并将它们导出到 csv 中,仅识别重复的名称。

csv_file1:

first_name, last_name
lucas, micker
kyle, smith
mark, davis 
danny, green
myles, cook

csv_file2:

first_name, last_name
corey, mintzer 
lucas, erin
mark, davis 
danny, green 
myles, turner 

预期输出:

first_name, last_name
mark, davis
danny, green

这是我不工作的代码。我对熊猫库不太了解,我确定还有其他方法可以做到这一点。

import pandas as pd
a = pd.read_csv('file1.csv')
b = pd.read_csv('file2.csv')
c = pd.merge(a, b, how='inner', on=['first_name', 'last_name'])
c.to_csv('remove_dup_.csv')

非常感谢任何帮助。

【问题讨论】:

  • 应该工作,你能更准确地说什么“不工作”吗?也许这是一个前导/尾随空格问题,或者您的输出中是否有更多重复项?
  • 我同意@ALollz 应该可行。

标签: python python-3.x pandas csv export-to-csv


【解决方案1】:

这就为你解决了:

数据

a = pd.DataFrame([['lucas', 'micker'],
                ['kyle', 'smith'],
                ['mark', 'davis' ],
                ['danny', 'green'],
                ['myles', 'cook']], columns = ['first', 'last'])
b = pd.DataFrame([['corey', 'mintzer' ],
                ['lucas', 'erin'],
                ['mark', 'davis' ],
                ['danny', 'green' ],
                ['myles', 'turner']] , columns = ['first', 'last'])

a = pd.read_csv(path1)
b = pd.read_csv(path2)
for col in ['first', 'last']: # remove whitespace at end of strings
    a[col] = a[col].map(lambda x: x.lstrip().rstrip()) 
    b[col] = a[col].map(lambda x: x.lstrip().rstrip()) 

解决方案

c = pd.concat([a,b], axis=0) # stack  dataframes
d = c[c.duplicated(keep='first')] # get duplicated rows

输出

print(d.to_string())
   first   last
7   mark  davis
8  danny  green

【讨论】:

  • 我的两个 csv 文件都包含数百行,我怎样才能使它可以包含“a”和“b”的文件路径
  • 这些文件中有标题吗?
  • 这些文件中有标题
  • 好的,我编辑了文件并添加了一个清理字符串的步骤,因为您的字符串末尾的空格可能有问题
【解决方案2】:

您的代码是正确的,问题是您没有命名 csv 的列。默认情况下,pandas 将 csv 的第一行作为列名。

以下是修改 csv 以使代码正常工作的方法:

csv_file1:

first_name,last_name
lucas, micker
kyle, smith
mark, davis 
danny, green
myles, cook

csv_file2:

first_name,last_name
corey, mintzer 
lucas, erin
mark, davis 
danny, green 
myles, turner 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多