我正在跟进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(厨房)的内容等)?
答案 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)
(请注意,再次删除索引名称只是为了审美)