我有一个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
答案 0 :(得分:5)
drop duplicates工作正常。你的代码很好。以下是关于发生了什么的解释。当您创建pandas数据帧并且未指定索引时,pandas会对其自身的行进行索引,这是一个简单的递增整数值。
删除重复项时,将删除所有重复的索引。如果要重置索引,请执行以下操作:
df.reset_index(inplace=True)
您的数据框将被重新编入索引,当您打印df时,您将看到最后一个索引为967。