【问题标题】:How can you find duplicate rows and delete output based on whether or not one column has a certain value?如何根据一列是否具有特定值来查找重复行并删除输出?
【发布时间】:2020-01-18 22:44:14
【问题描述】:

我有一个 CSV 文件,其中包含如下数据:

job1,job_type,new
job1,job_type,cancel
job2,job_type,new
job3,job_type,complete

我需要删除 job1,因为它已被取消。我该怎么做呢?

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 尝试研究如何解决这个问题,使用这个网站和其他在线资源作为资源。将任务分解为多个步骤,然后从那里开始: 1. 如何使用 pandas 读取 csv(我看到您添加了标签)。 2.如何删除列具有特定值的行(此处的值为“取消”)。 3. 如何用pandas写csv。如果您在构建解决方案时遇到困难,请随时提问。
  • 我不只是想删除说取消的行,我想删除新行和取消行。
  • 从字面上看,我所说的一切仍然有效。先尝试一下。 向我们展示到目前为止您已经尝试过什么。
  • 您想直接在文件上烧录/替换吗?也许您想加载该文件,然后处理数据,然后再次保存...搜索替换文件,您不妨用 sed 或 perl 来做 lol

标签: python pandas


【解决方案1】:

让我们试试这个:

import pandas as pd
import numpy as np

from io import StringIO

csvfile = StringIO("""job1,job_type,new
job1,job_type,cancel
job2,job_type,new
job3,job_type,complete""")

df = pd.read_csv(csvfile, header=None)

df[~df[0].isin(df.loc[df[2] == 'cancel',0])].to_csv('out.csv', index=False, header=None)

!more out.csv

输出:

job2,job_type,new
job3,job_type,complete

【讨论】:

    【解决方案2】:

    您可以尝试在 python 中使用 set 函数。 将每一列或每一行转换为一个列表,然后对该列表进行设置操作。

    例如:

    A = ["a","b", "a" ]
    Dub = list(set(A))
    print(Dub)
    

    输出:

    ["a", "b"] 
    

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2022-01-23
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多