pandas从特定列中删除重复的行值

时间:2017-11-08 06:48:13

标签: pandas

我想从特定列中删除重复的行值 - 在这种情况下,列名称为" number"。

在:

        number qty status
    0    10      2    go
    1    10      5    nogo
    2    4       6    yes
    3    3       1    no
    4    2       7    go
    5    5       2    nah
    6    5       6    go
    7    5       3    nogo
    8    1       10   yes
    9    1       10   go 
    10   5       2    nah

之后:

        number qty status
    0    10      2    go
                 5    nogo
    1    4       6    yes
    2    3       1    no
    3    2       7    go
    4    5       2    nah
                 6    go
                 3    nogo
    5    1       10   yes
                 10   go 
    6    5       2    nah

1 个答案:

答案 0 :(得分:0)

通过将mask ed列与{{3}列进行比较而创建的新系列a,可以将值duplicated替换为shift的空字符串或NaN。 }:

a = df['number'].ne(df['number'].shift()).cumsum()
#for replace ''
df['number'] =  df['number'].mask(a.duplicated(), '')
#for replace NaNs
#df['number'] =  df['number'].mask(a.duplicated())
print (df)
   number  qty status
0      10    2     go
1            5   nogo
2       4    6    yes
3       3    1     no
4       2    7     go
5       5    2    nah
6            6     go
7            3   nogo
8       1   10    yes
9           10     go
10      5    2    nah

详情:

a = df['number'].ne(df['number'].shift()).cumsum()
print (a)
0     1
1     1
2     2
3     3
4     4
5     5
6     5
7     5
8     6
9     6
10    7
Name: number, dtype: int32