dataFrame数据如下
import pandas as pd
data = pd.DataFrame({'name':['小红','小兰','小明','小芳'], 'sex':["女","女","男","女"], 'age':[19,20,23,20]})
name sex age
0 小红 女 19
1 小兰 女 20
2 小明 男 23
3 小芳 女 20
1.查找age列相同的数据
a = data.groupby('age').count()>1
age = a[a['sex'] == True].index
repeat_da = data[data['age'].isin(age)]
repeat_da
name sex age
1 小兰 女 20
3 小芳 女 20
步骤:
(1)将data根据age分组,每个age出现的次数大于1的返回True,本例中只有20出现超过1次,所以只有20为True其他为False
(2)取sex为True时的索引,即age的值,此时写age = a[a[‘name’] == True].index效果相同
(3)返回 'age’列中含有 [20] 的datafram
⚠️注意这边有一个知识点:根据列的值返回含有具体条件的dataframe
2.duplicated()方法判断是否有重复的值
(1)某列是否有重复的值,重复时返回True,第一次出现为False
fg1 = data.age.duplicated()
fg1
out:
0 False
1 False
2 False
3 True
Name: age, dtype: bool
(2)某行是否重复时,重复时返回True,第一次出现为False
fg = data.duplicated()
fg
out:
0 False
1 False
2 False
3 False
dtype: bool
可以看到该例中没有重复的行
(3)判断dataframe数据多列数据是否重复(多列组合查)
fg = data.duplicated(subset=['age','sex'])
fg
out:
0 False
1 False
2 False
3 True
dtype: bool
3.drop_duplicats()方法去重
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
"""
drop_duplicats参数说明:
参数subset
subset用来指定特定的列,默认所有列
参数keep
keep可以为first和last,表示是选择最前一项还是最后一项保留,默认first
参数inplace
inplace是直接在原来数据上修改还是保留一个副本,默认为False
"""
#将满足年纪和年龄相同的行删除
data.drop_duplicates(subset=['sex','age'], keep=False , inplace=False)
out:
name sex age
0 小红 女 19
2 小明 男 23