pandas(文本去重)根据某列删除重复行

pandas(文本去重)根据某列删除重复行


方法一:
unique()函数,该函数用于获取Series对象的唯一值。

import pandas as pd

dic = {
    
    'name':['a', 'b', 'c', 'd'], 'comment':['abc', '真棒', '真棒', '123']}

df = pd.DataFrame(dic)

df
Out[4]: 
  name comment
0    a     abc
1    b      真棒
2    c      真棒
3    d     123

df['comment'] = pd.DataFrame(df['comment'].unique())

df
Out[5]: 
  name comment
0    a     abc
1    b      真棒
2    c     123
3    d     NaN

# 删除comment中的空值
df = df.dropna(subset=['comment'])

df
Out[6]: 
  name comment
0    a     abc
1    b      真棒
2    c     123

方法二:

drop_duplicates(subset=[‘comment’], keep=‘first’, inplace=True)
subset: 列表的形式填写要进行去重的列名,默认为None,表示根据所有列进行。
keep: 可选参数有三个:‘first’、 ‘last’、 False, 默认值 ‘first’。其中,
(1)first表示: 保留第一次出现的重复行,删除后面的重复行。
(2)last表示: 删除重复项,保留最后一次出现。
(3)False表示: 删除所有重复项。
inplace:默认为False,删除重复项后返回副本。True,直接在原数据上删除重复项。

import pandas as pd

dic = {
    
    'name':['a', 'b', 'c', 'd'], 'comment':['abc', '真棒', '真棒', '123']}

df = pd.DataFrame(dic)

df
Out[6]: 
  name comment
0    a     abc
1    b      真棒
2    c      真棒
3    d     123
df.drop_duplicates(keep='first', inplace=True)

df
Out[14]: 
  name comment
0    a     abc
1    b      真棒
2    c      真棒
3    d     123

subset默认为None,根据所有列考虑,1,2列虽然comment相同,但name不相同,故保留,使用时根据具体情况进行选择。

df.drop_duplicates(subset=['comment'], keep='first', inplace=True)

df
Out[16]: 
  name comment
0    a     abc
1    b      真棒
3    d     123

设置subset为comment即可删除该列重复值。此时索引没有重置,如有需要可使用以下方法重置索引。

df.reset_index(drop=True, inplace=True)

df
Out[18]: 
  name comment
0    a     abc
1    b      真棒
2    d     123

猜你喜欢

转载自blog.csdn.net/qq_43965708/article/details/109892053
今日推荐