Par exemple, j'ai une trame de données (DF_1) avec une colonne contenant des données texte. La deuxième trame de données (DF_2) contient des nombres. Comment puis-je vérifier si le texte contient les chiffres de la deuxième trame de données?
df_1 strong> p> df_2 strong> p> donc je veux vérifier si les entrées de [note] de df_1 contiennent les entrées de [code_number] de df_2 p> J'ai essayé d'utiliser le Code suivant: Le résultat final que je recherche après que le filtrage a été appliqué est: p> df_1 [df_1 ['Remarque']. str.contains (df_2 ['Code_Number'])] Code> Et je sais que je ne peux pas utiliser de rejoindre car je n'ai pas de clé pour vous connecter. P>
3 Réponses :
Faites ceci:
df_1.loc[df_1['Note'].apply(lambda x: any(str(number) in x for number in df_2['Code_Number']))]
J'ai donc: df_i = df_1.loc [df_1 ['Remarque']. Appliquer (Lambda X: Any (STR (numéro (numéro) dans x pour le numéro dans df_2 ['code_number'])) code> < Code> retour df_i code> mais quand j'exécute cela, il est indiqué "Syntaxe invalide"
Désolé, il y avait eu une faute de frappe, @sammywemmy a fixé. Devrait courir maintenant.
Essayez ceci et voyez s'il couvre votre cas d'utilisation: obtenez un cartésien transversien des deux colonnes, en utilisant iTERTOOLS 'Product et filtrer en fonction de la condition:
from itertools import product
m = [ left for left, right
in product(df.Note,df1.Code_Number)
if str(right) in left]
pd.DataFrame(m,columns=['Note'])
Note
0 The code to this is 1003
Firstly, you have to create 1 column in your df1 where the notes are with a list of numbers that are present in the Notes and then Compare the List column of numbers with the List column of the df2 where the numbers are present(both should be in list format)
#Extract Numbers from Notes
a_string = "0abcadda1 11 def 23 10007"
numbers = [int(word) for word in a_string.split() if word.isdigit()]
print(numbers)
list_test = "103,23"
#Finding common element from both lists the list
L1 = [2,3,4]
L2 = [1,2]
[i for i in L1 if i in L2]
S1 = set(L1)
S2 = set(L2)
print(S1.intersection(S2))
#If you want to find out the common element
def common_data(list1, list2):
result = False
# traverse in the 1st list
for x in list1:
# traverse in the 2nd list
for y in list2:
# if one common
if x == y:
result = True
return result
return result
# driver code
a = [1, 2, 3, 4, 5]
b = [5, 6, 7, 8, 9]
print(common_data(a, b))
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9]
print(common_data(a, b))