在Python中,如何使用条件更改数据的值?

在Python中,如何使用条件更改数据的值?,python,pandas,dataframe,Python,Pandas,Dataframe,我不知道如何解释我的问题。。但我有一个系列是这样的: 0 Male 1 Female 2 male 3 M 4 m 5 LGBT 6 Others

我不知道如何解释我的问题。。但我有一个系列是这样的:

0 Male 
1 Female                   
2 male                                       
3 M                                        
4 m                                  
5 LGBT                                   
6 Others                           
7 Make                          
8 Male                              
9 Man                                
10 Cis Male 
我想把范围缩小到:

Male
Female
Others
LGBT
我可以使用以下方法缩小范围:

LGBT = survey['Gender'].str.contains('Trans|Neuter|queer|andro|Andro|Enby|binary|trans')
survey.loc[LGBT, 'Gender'] = 'LGBT'

Others = survey['Gender'].str.contains('N|A|p')
survey.loc[Others, 'Gender'] = 'Others'

Female = survey['Gender'].str.contains('F|Wo|f|wo')
survey.loc[Female, 'Gender'] = 'Female'
对于每个部分,但现在我试图将其余的项目放入“男性”,我无法这样做。我试着使用正则表达式,但因为'Female'也包含'm',它只是将所有内容都更改为男性

我怎样才能解决这个问题?我应该研究什么样的功能?我尝试了
eq
,如下所示:

survey['Gender'].eq(['Male', 'Female', 'Others', 'LGBT']).map({False: 'Male'})
但它给了我一个错误:

ValueError: Lengths must be equal

我越来越糊涂了。。。。任何建议和帮助都将不胜感激

您可以使用
pandas.Series.isin
,当您想要同时比较多个值时,这非常有用

Male = ~survey['Gender'].isin(['Female', 'Others', 'LGBT'])
survey.loc[Male, 'Gender'] = 'Male'
由于您已经缩小了其他情况的范围,您只需检查元素是否与之前设置的任何元素相等(
女性
其他
LGBT
),如果不相等,则将其设置为男性