我有一个Excel文件(attached here)。我必须根据两个或多个重复的ID进行重复数据消除。
重复数据消除的标准基于多个因素。在
- 身份证
- 类型
- 时间
现在,我手动执行重复数据消除的过程是:
- 我按升序排列id。在
- 我为每个以t开头的id设置属性作为tid。在
- 我在id列中为每个[id]输入xid。如果有重复的[id],我有时会为一个id留空(如果连续两个[id]的日期相同)。在
- 对于每一个重复的身份证,我首先检查类型是茶还是咖啡。如果一个是咖啡,另一个是茶,我们总是喜欢咖啡,并为茶设置“否”属性。我们可以得到两个以上的重复,所以,我们必须设置“否”为所有的茶相同的ID。如果同一身份证有两杯咖啡和一杯茶,我们将根据时间保留最新的一份。在
- 如果重复的id具有相同的类型,那么我们将查看日期并将属性设置为“No”(对于较早的日期)。如果日期相同,那么我们将保留一个,并将其他日期的属性设置为“否”。ID可以是两个以上,但过程是相同的。在
我想做的是:
- 将属性设置为以t开头的id的tid
- 对于具有[]的id,将属性设置为xid。在
如果两个或多个标识基于特定条件重复,请在属性中设置“否”:
咖啡应该比茶好。如果我们有茶和咖啡
对于重复的id,我们在每个tea的属性中都没有
每个重复的ID。
以防每张身份证都有一杯茶和两杯或两杯以上的咖啡
然后我们将根据时间(ID)对剩余咖啡设置“否”
如果时间戳较旧,则应为“否”。
如果每个重复的ID都有相同的类型,那么以哪个ID为准
应保留最新的根据时间和所有其他属性
应该是No.
如果所有重复的ID都有相同的日期和类型,那么
没有人会随机反对所有人。
注意:
- 复制一,二和三是我们可以很容易地根据颜色过滤出来,然后重复数据消除。他们基于Excel公式:(Duplicate 1=(=IF(B2=B3,1,“”),Duplicate2=(=IF(C1=1,1,“”),Duplicate3=(=IF(SUM(C2:D2)>;=1,1,“”)
- 无法删除行。在
- 我找不出这方面的任何代码,这是我在一个关键自动化过程中的拦路虎。在
- 附件中的属性列中没有/xid/tid以供参考。在
重要问题:
-使用python有可能或者可行吗?在
Tags:
我不知道我是否正确回答了你的问题,所以我会提供一些不同的方法。在
如果要删除包含相同id、Type和Time值的所有行,可以使用以下方法:
结果是:
^{pr2}$这意味着有7行具有完全相同的类型、id和时间。 如果要删除完全相同的行(合并所有列),则会得到所需的结果:
此外:
返回一个True/False数组,该数组指示行是否重复
如果您想知道数据帧的哪些单个值是重复的,请使用:
打电话的原因pd系列复制此方法应用于DataFrame的轴1,即每个DataFrame列。DataFrame列是Pandas系列对象。在
如果您不想删除行,而只想指出哪些值是重复的,请使用:
编辑: 如果您只想将属性列设置为一个特殊值(我选择了“复制”),如果一行中的“id”、“Type”、“Time”值与另一行重复,并且不想更改其余列的值,则此代码应提供所需的结果:
您可以看到,第6行(=原始excel文件中的第8行)包含第一个副本。在本例中,这是excel文件中第6行的副本。在
编辑2
在我的第二次编辑中,代码现在将把所有重复项(也是第一项)标记为“重复项”。同时,代码不再搜索所有三列(id、Time、Type),而是查找(id和Time)或(id和Type)或(Time和Type)。因此,这三个会议的所有组合
|
有关此函数的更多信息,请阅读:drop_duplicates,duplicated用于Series和DataFrames(主要区别在于,对于Series,函数应用于单个值,对于dataframe,它们分别应用于指定列的行)
相关问题 更多 >
编程相关推荐