合并/连接CSV导入的数据帧并删除重复项

时间:2016-07-07 13:38:06

标签: loops csv pandas duplicates

我正在跟进previous question

已整理出一个循环来导入CSV,连接数据并删除重复项。

files = glob.glob('./A08_csv/A08_B1_T*.csv')
dfs = [pd.read_csv(fp,  index_col=[0], parse_dates=[0], dayfirst=True) for fp in files] 
df = pd.concat(dfs)

df_purged = df.drop_duplicates(inplace=True)
print df_purged

但是df.drop_duplicates(inplace = True)不起作用(当然我遗漏了一些东西)并且print返回一个void。如何指定按索引检查重复项?添加列名似乎不起作用。

另外,如何将此循环转换为公式,因此我可以将此递归输入应用于具有不同文件名的csv(即可用于A08_B1_T * .csv(卧室)和A08_KI_T * .csv(厨房)的内容等)?

2 个答案:

答案 0 :(得分:1)

这会有帮助吗?

df.drop_duplicates(['col_name']) 

这是一个解决方案,它将索引添加为数据框列,删除重复项,然后删除新列:

df= df.reset_index().drop_duplicates(subset='Date', 'Time', keep='last').set_index(subset='Date', 'Time')

答案 1 :(得分:1)

您了解$('body').animate({ scrollTop: $("."+el).offset().top }, 500, function(){ $("."+el).insertAfter('.sticky'); $('body').scrollTop(0); }); 选项吗?

如果您执行此操作inplace = True,则表示您将修改inplace,因此请勿将值设置为df

这里有两个解决方案:要么保留“未预制”的数据帧,要么:

df_purged

要么你不关心保留它,你要这样做:

df_purged = df.drop_duplicates()

您的结果数据框的第一个选项是df.drop_duplicates(inplace = True) ,但在第二个选项中,df_purged会自您执行df后被清除。

话虽如此,如果你想清除你的索引,如果你不需要保留它,你可以inplace然后reset_index这样:

drop_duplicates

如果您需要保留索引(以删除的行为模):

df_purged = df.reset_index().drop_duplicates(['index']).drop('index',1)

(请注意,再次删除索引名称只是为了审美)