簡體   English   中英

如何有效地刪除python中dataframe或csv文件中的所有重復項?

[英]How to remove efficiently all duplicates in dataframe or csv file in 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)的行應保留在數據幀中。

在此先感謝您的幫助。

如果要基於特定的列刪除重復項,則可以在drop_duplicates使用subset參數(大熊貓的較早版本: cols ):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM