我的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
Run Code Online (Sandbox Code Playgroud)
以上是使用以下代码获得的,在该代码中,我尝试删除所有重复项,但很遗憾,其中一些仍然存在(基于'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)
Run Code Online (Sandbox Code Playgroud)
另外,我想知道如何有效地从数据中删除所有重复项(预处理),以及是否应该在将其读入数据帧之前执行此操作。例如,最后两行被视为重复行,只有最后一个不包含空val1(val1 = 3200)的行应保留在数据帧中。
在此先感谢您的帮助。
如果您要根据特定列砸重复,你可以使用subset参数(较老版本的熊猫:cols)在drop_duplicates:
df_clean = df.drop_duplicates(subset=['timestamp', 'user_id'])
Run Code Online (Sandbox Code Playgroud)