使用pandas&删除重复项。蟒蛇

时间:2017-08-12 21:27:10

标签: python pandas duplicates

我想根据我的第一列删除重复项,让我们假设这是'id'。我需要删除的值是具有最不完整数据的记录。

例如,我在enter image description here

下面的屏幕截图中显示了4条记录

我希望根据我的列ID删除重复项。我希望删除的副本取决于我其他列中的值。例如lname不能是一个数字。它也不能是NA或空白。因此,对于此示例,我希望保留中间行并删除所有其他重复项。

如何通过保持看起来最干净的记录(基于其他字段中存在更清晰的值)来实现智能过滤器以消除重复项。

我正在查看python中的熊猫图书馆。任何方向都会受到赞赏。

data = pd.read_csv('x.csv');
data = (data.drop_duplicates(['id'], keep ='last'));

2 个答案:

答案 0 :(得分:0)

您可以使用grouped.apply,文档称之为“灵活应用”,您可以在其中传递一个要应用组的函数,但在该函数中,该组将被视为实际的{{1} }。因此,您可以过滤不需要的行并从该函数返回单个DataFrame。 Pandas将智能地组合这些调用的所有数据帧结果。请参阅文档http://pandas.pydata.org/pandas-docs/stable/groupby.html

example ::

DataFrame

答案 1 :(得分:0)

# Filter your data to only keep strings/unicodes in the 'Iname' column.
data = data.loc[[isinstance(row, (str, unicode)) for row in data['Iname']], :]

# Replace empty strings with NaN values.
data.replace("", np.nan, inplace=True)

# Drop nulls, remove duplicates and keep last.
data = data[data['Iname'].notnull()].drop_duplicates(subset='id', keep='last')