Python 如何清除pandas中单元格中的重复数据?
我有一个数据框,其中列性别在单元格中有重复项,下面是一个示例:Python 如何清除pandas中单元格中的重复数据?,python,pandas,Python,Pandas,我有一个数据框,其中列性别在单元格中有重复项,下面是一个示例: 1. Male 2. Female, female 3. Female, female , Female, female 将值转换为小写,然后拆分、转换为集合,并在必要时重新连接: df['new'] = df['col'].apply(lambda x: ', '.join(set(x.lower().split(', ')))) print (df) col
1. Male
2. Female, female
3. Female, female , Female, female
将值转换为小写,然后拆分、转换为集合,并在必要时重新连接:
df['new'] = df['col'].apply(lambda x: ', '.join(set(x.lower().split(', '))))
print (df)
col new
1.0 Male male
2.0 Female, female female
3.0 Female, female, Female, female female
删除不包含行的行的解决方案,-表示每个单元格有多个值:
print (df)
col
1.0 Male
2.0 Female, female
3.0 Female, male, Female, female
df['new'] = df['col'].apply(lambda x: '&'.join(set(x.lower().split(', '))))
print (df)
col new
1.0 Male male
2.0 Female, female female
3.0 Female, male, Female, female female&male
df = df[df['new'].str.count('&') == 0]
print (df)
col new
1.0 Male male
2.0 Female, female female
将值转换为小写,然后拆分、转换为集合,并在必要时重新连接:
df['new'] = df['col'].apply(lambda x: ', '.join(set(x.lower().split(', '))))
print (df)
col new
1.0 Male male
2.0 Female, female female
3.0 Female, female, Female, female female
删除不包含行的行的解决方案,-表示每个单元格有多个值:
print (df)
col
1.0 Male
2.0 Female, female
3.0 Female, male, Female, female
df['new'] = df['col'].apply(lambda x: '&'.join(set(x.lower().split(', '))))
print (df)
col new
1.0 Male male
2.0 Female, female female
3.0 Female, male, Female, female female&male
df = df[df['new'].str.count('&') == 0]
print (df)
col new
1.0 Male male
2.0 Female, female female
您只需保留第一部分:
df['gender'] = df['gender'].apply(lambda x: x.split(',')[0])
对于同一单元格中的男性和女性,这是您的选择,或者您删除该行,或者您决定第一个性别是确定的,我的解决方案,或者您设置另一个值以稍后识别。但这不是你的第一个要求你只需保留第一份:
df['gender'] = df['gender'].apply(lambda x: x.split(',')[0])
对于同一单元格中的男性和女性,这是您的选择,或者您删除该行,或者您决定第一个性别是确定的,我的解决方案,或者您设置另一个值以稍后识别。但这不是你的第一个要求在运行上述代码后,我刚刚意识到,有些细胞是雌性的,雄性的。我应该放下这些行还是应该怎么做?@mickeywise-这意味着在一个细胞中有像雌性、雄性、雌性、雌性这样的数据。那么您需要用这些单元格删除这些行吗?我的分析是否会有偏差,因为会从这些行中删除重要信息。@mickeywise-所以只需要在第一个值之前删除第一个值?然后使用df['new']=df['col'].applylambda x:x.split','[0]。运行上述代码后,我刚刚意识到有些细胞是雌性的,雄性的。我应该放下这些行还是应该怎么做?@mickeywise-这意味着在一个细胞中有像雌性、雄性、雌性、雌性这样的数据。那么您需要用这些单元格删除这些行吗?我的分析是否会有偏差,因为会从这些行中删除重要信息。@mickeywise-所以只需要在第一个值之前删除第一个值?然后使用df['new']=df['col'].applylambda x:x.split','[0]。我不知道您的分析是否有偏差,这取决于删除行的事实对您是否重要。不管怎么说,如果你同时有女性和男性,那就有一个错误,所以你可以放弃,或者你可以在以后隔离和修复我不知道你的分析是否会有偏见,这取决于放弃这一行对你来说是否重要。不管怎么说,如果您同时拥有女性和男性,则会出现错误,因此您可以放弃,或者您可以稍后隔离并修复