Py学习  »  Python

使用python消除excel中的重复/重复现象

srish • 4 年前 • 718 次点击  

我正在尝试删除“名称”列下的重复/重复名称。我只想通过使用python脚本来避免重复的名字。

这是我的输入excel:

input

需要这样的输出:

output

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46666
 
718 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Datanovice
Reply   •   1 楼
Datanovice    4 年前

这并不是说你只是在一个列中用空格填充重复的键,我会处理如下:

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

假设您的数据帧名为df

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

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

说明:

我们在上面所做的是:

首先选择一个列,或者用pandas术语a系列,然后应用 .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

我们可以看到雷卡已经下楼了

把这些放在一起,

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] 它允许您通过标签或布尔数组(在本例中为数组)访问数据帧。

但是,我们只想访问错误的布尔值,所以我们使用 ~ 它颠倒了我们数组的逻辑。

    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

希望能有帮助!