Je voudrais comparer 2 séries de pandas et trouver les mêmes entrées dans les deux séries mais avec une sensibilité à la casse différente.
Similaire à l'exemple ci-dessous:
df['Comment']=np.where((df['Identifier_1']==df['Identifier_2']),'The same',df['Comment'])
mais La condition doit être modifiée d'une manière ou d'une autre pour que si Identifier_1 = 'aBc' et Identifier_2 = 'Abc' renvoie Vrai.
Thanx et BR
3 Réponses :
Utilisez lower():
df['Comment']=np.where(df['Identifier_1'].astype(str).lower() == df['Identifier_2'].astype(str).lower(),'The same',df['Comment'])
Par défaut, les deux chaînes seront en minuscules afin qu'elles puissent être comparées comme vous le souhaitez. De cette façon, AbC et aBc seront respectivement transformés en abc et abc , renvoyant True code >
Utilisez la série .str.lower :
df = pd.DataFrame({'Identifier_1':['aBc','aBC'],
'Identifier_2':['Abc','ABZ'],
'Comment':['com1','com2']})
df['Comment']=np.where(df['Identifier_1'].str.lower() == df['Identifier_2'].str.lower(),
'The same',
df['Comment'])
print (df)
Identifier_1 Identifier_2 Comment
0 aBc Abc The same
1 aBC ABZ com2
Utilisez simplement str.lower () pour les mettre tous les deux en minuscules.
df['Comment']=np.where(df['Identifier_1'].str.lower().equals(df['Identifier_2'].str.lower()),
'The same',
df['Comment'])