首页 > 解决方案 > 使用python删除excel中的重复/重复出现

问题描述

我正在尝试删除 NAME 列下的重复/重复名称。我只想通过使用 python 脚本来避免重复/重复名称中的第一次出现。

这是我的输入excel:

输入

并且需要这样的输出:

输出

标签: excelpython-3.xpandas

解决方案


这并不是说您只是将一列中的重复键填充为空白,而是删除重复项,我将按如下方式处理:

通过创建一个掩码,如果该行是 == 上面的行,则返回一个真/假布尔值。

假设您的数据框称为 df

mask = df['NAME'].ne(df['NAME'].shift())

df.loc[~mask,'NAME'] = ''

解释 :

我们在上面做的是以下,

首先选择一个列,或者在熊猫术语中是一个系列,然后我们应用一个.ne(不等于)实际上是!=

让我们看看这个在行动。

import pandas as pd
import numpy as np
# create data for dataframe
names = ['Rekha', 'Rekha','Jaya','Jaya','Sushma','Nita','Nita','Nita']
defaults = ['','','c-default','','','c-default','','']
classes = ['forth','third','foruth','fifth','fourth','third','fifth','fourth']

现在,让我们创建一个类似于您的数据框。

df = pd.DataFrame({'NAME' : names,
         'DEFAULT' : defaults,
         'CLASS' : classes,
         'AGE' : [np.random.randint(1,5) for len in names], 
         'GROUP' : [np.random.randint(1,5) for len in names]}) # being lazy with your age and group variables. 

所以,如果我们这样做,我们会得到df['NAME'].ne('Omar')相同的结果。[df['NAME'] != 'Omar']

0    True
1    True
2    True
3    True
4    True
5    True
6    True
7    True

所以,除此之外,我们想看看第 1 行中的名称(记住 python 是一种 0 索引语言,所以第 1 行实际上是第 2 个物理行)是否.eq在上面的行中。

我们通过调用[.shift][2]超链接来获取更多信息。

这基本上做的是用定义的变量编号通过其索引移动行,让我们称之为n。

如果我们打电话df['NAME'].shift(1)

0       NaN
1     Rekha
2     Rekha
3      Jaya
4      Jaya
5    Sushma
6      Nita
7      Nita

我们可以在这里看到 Rekha 已经下移了

所以把所有这些放在一起,

df['NAME'].ne(df['NAME'].shift())
0     True
1    False
2     True
3    False
4     True
5     True
6    False
7    False

我们将它分配给一个名为的自定义变量,mask您可以随意调用它。

然后我们使用[.loc][2]它允许您通过标签或布尔数组(在本例中为数组)访问您的数据框。

但是,我们只想访问为 False 的布尔值,因此我们使用 a~来反转数组的逻辑。

    NAME    DEFAULT CLASS   AGE GROUP
1   Rekha       third   1   4
3   Jaya        fifth   1   1
6   Nita        fifth   1   2
7   Nita        fourth  1   4

我们现在需要做的就是将这些行更改为空白作为您的初始要求,我们就剩下了。

    NAME    DEFAULT   CLASS AGE GROUP
0   Rekha             forth 2   2
1                     third 1   4
2   Jaya    c-default forth 3   3
3                     fifth 1   1
4   Sushma            fourth3   1
5   Nita    c-default third 4   2
6                     fifth 1   2
7                     fourth1   4

希望有帮助!


推荐阅读