python之如何有效地删除python中数据帧或csv文件中的所有重复项

JeffreyZhao 阅读:28 2024-09-07 23:24:14 评论:0

我在 mytest.csv 中包含下表,如下所示:

timestamp   val1    val2    user_id  val3  val4    val5    val6 
01/01/2011  1   100 3    5     100     3       5 
01/02/2013  20  8        6     12      15      3 
01/07/2012      19  57   10    9       6       6         
01/11/2014  3100    49  6        12    15      3 
21/12/2012          240  30    240     30        
01/12/2013          63                   
01/12/2013  3200    51  63       50 

以上是使用以下代码获得的,其中我试图删除所有重复项,但不幸的是仍有一些(基于“时间戳”和“用户 ID”):
import pandas as pd 
 
newnames = ['timestamp', 'val1', 'val2','val3', 'val4','val5', 'val6','user_id'] 
df = pd.read_csv('mytest.csv', names = newnames, header = False, parse_dates=True, dayfirst=True) 
df['timestamp'] = pd.to_datetime(df['timestamp'], dayfirst=True)  
df = df.loc[:,['timestamp', 'user_id', 'val1', 'val2','val3', 'val4','val5', 'val6']] 
df_clean = df.drop_duplicates().fillna(0) 

另外,我想知道如何有效地从数据中删除所有重复项(预处理),以及是否应该在将其读入数据帧之前执行此操作。例如,最后两行被认为是重复的,只有不包含空 val1 (val1 = 3200) 的最后一行应保留在数据帧中。

在此先感谢您的帮助。

请您参考如下方法:

如果要根据特定列删除重复项,可以使用 subset cols 中的参数(旧 Pandas 版本:drop_duplicates) :

df_clean = df.drop_duplicates(subset=['timestamp', 'user_id']) 


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号