如何根据一列是不是具有特定值来查找重复行并删除输出?
Posted
技术标签:
【中文标题】如何根据一列是不是具有特定值来查找重复行并删除输出?【英文标题】: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 【参考方案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"]
【讨论】:
以上是关于如何根据一列是不是具有特定值来查找重复行并删除输出?的主要内容,如果未能解决你的问题,请参考以下文章
Pandas - 在两列中查找具有匹配值的行并在另一列中相乘
Selenium web 自动化使用 python:如何使用 selenium 处理表以通过匹配文本来查找特定行并删除该行