Mon but est d'obtenir l'équivalent de pandas géants du dessous Code R:Pandas/Python équivalent de match ifelse complexe R
df1$String_1_check = ifelse(df1$String_1 == df2[match(df1$String_2, df2$String_2), 1], TRUE, FALSE)
Si la valeur de la n-ième rangée de la colonne String_1 de DF1 est égale à la première colonne de df2 où la nième ligne de la colonne String_2 de df1 correspond à String_2 de df2, puis True dans une nouvelle colonne String_1_check, sinon False dans String_1_check. Df1 a plusieurs instances des mêmes valeurs dans String_1 et String_2, et df2 n'a qu'une instance de chaque valeur possible dans String_1. String_3 n'est pas unique. Avec ces exemples dataframes:
df1 = pd.DataFrame({'String_1': ['string 1', 'string 1', 'string 2', 'string 3', 'string 1'], 'String_2': ['string a', 'string a', 'string b', 'string a', 'string c']})
df2 = pd.DataFrame({'String_3': ['string 1', 'string 2', 'string 3'], 'String_2': ['string a', 'string b', 'string c']})
String_1 String_2
0 string 1 string a
1 string 1 string a
2 string 2 string b
3 string 3 string a
4 string 1 string c
String_3 String_2
0 string 1 string a
1 string 2 string b
2 string 3 string c
La sortie souhaitée serait:
String_1 String_2 String_1_check
0 string 1 string a True
1 string 1 string a True
2 string 2 string b True
3 string 3 string a False
4 string 1 string c False
J'ai essayé np.where
, isin
, pd.match
(désapprouvée maintenant), mais ne l'ai pas trouvé une solution.
Cela a fini par fonctionner le mieux pour mes données réelles. Merci! . –