Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何清除pandas中单元格中的重复数据?_Python_Pandas - Fatal编程技术网

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]。我不知道您的分析是否有偏差,这取决于删除行的事实对您是否重要。不管怎么说,如果你同时有女性和男性,那就有一个错误,所以你可以放弃,或者你可以在以后隔离和修复我不知道你的分析是否会有偏见,这取决于放弃这一行对你来说是否重要。不管怎么说,如果您同时拥有女性和男性,则会出现错误,因此您可以放弃,或者您可以稍后隔离并修复