如何在python中高效地删除dataframe或csv文件中的所有重复项?

2024-05-18 19:02:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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

上面的代码是使用以下代码获得的,在这些代码中,我试图删除所有重复项,但不幸的是,仍有一些重复项(基于“timestamp”和“user_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)的最后一行应保留在数据帧中。

提前谢谢你的帮助。


Tags: csv数据代码idtruedftimestamppd
1条回答
网友
1楼 · 发布于 2024-05-18 19:02:49

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

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

相关问题 更多 >

    热门问题