删除具有重复列的行pandas dataframe(Python)

时间:2017-04-29 17:49:35

标签: python dataframe sklearn-pandas

我有一个csv,我用pandas读取并创建了一个数据帧。 数据框如下所示:

description     title
lorem ipsum       A
ipsum lorem       A
dolor sit amet    C
amet sit dolor    B

它有1034行和2列

现在我想删除数据框中具有重复标题的所有行,并使用如下数据框:

description     title
lorem ipsum       A
dolor sit amet    C
amet sit dolor    B

我找到了一个解决方案,说使用drop_duplicates()删除重复项。在我的场景中,我做了:

df.drop_duplicates('title', inplace = True)

当我print df时它仍然显示1034行,但最后它显示[967 x 2],这意味着它有967行,它确实删除了重复项。即使做df.shape也告诉我同样的事情。但是当我打印或迭代它似乎不起作用。事实上甚至特定列的打印长度给了我967.例如:print len(df['title'])给了我967。只是数据帧索引编号相同吗?或者它真的还有1034行? 可能是什么问题?

我附上了我的代码:

df = pd.read_csv('latestdata.csv', sep='\t')
df.drop_duplicates('title', inplace=True)
print df

1 个答案:

答案 0 :(得分:5)

drop duplicates工作正常。你的代码很好。以下是关于发生了什么的解释。当您创建pandas数据帧并且未指定索引时,pandas会对其自身的行进行索引,这是一个简单的递增整数值。

删除重复项时,将删除所有重复的索引。如果要重置索引,请执行以下操作:

df.reset_index(inplace=True)

您的数据框将被重新编入索引,当您打印df时,您将看到最后一个索引为967。