J'ai un cadre de données qui ressemble à ce et une autre liste Je souhaite créer une nouvelle colonne après l'exécution du code, le La trame de données ressemblera à ceci: p> Voici ce que j'ai essayé: p> pour lequel je suis Obtenir cette erreur x = [g, t, r, c] code> p> col4 code> qui aura les éléments correspondant à partir de col3 code> avec la liste x. P> ValueError: la longueur des valeurs ne correspond pas à la longueur de l'index code> p> p>
5 Réponses :
Cette ligne devrait suffire à utiliser la compréhension de la liste:
df['col4'] = [ list(set(x) & set(df['col3'][i]) for i in range(len(df['col3']))]
Vous pouvez utiliser s'il existe plusieurs correspondances, c'est également pris en charge P> appliquer la méthode code> comme [ k pour k in y if k in x] code> est une méthode de compréhension de liste qui vous donne une liste d'éléments communs dans les deux x code> et y code> et Y code> Voici les éléments individuels de col3 code>. Si vous êtes sûr qu'il y a exactement une correspondance, vous pouvez faire P> df['col4'] = df['col3'].apply(lambda y : [k for k in y if k in x][0])
Vous pouvez essayer
Vous pouvez le faire dans une ligne comme si:
import pandas as pd
df = pd.DataFrame({"col1": [1, 2, 3],
"col2": ["ab", "rx", "pq"],
"col3": [['p','q','r','s'], ['t','u','v','w'], ['h','a','g','s']]})
x = {'g','t','r','c'}
df["col4"] = df["col3"].apply(lambda v: list(set(v).intersection(x)))
print(df)
# col1 col2 col3 col4
#0 1 ab [p, q, r, s] [r]
#1 2 rx [t, u, v, w] [t]
#2 3 pq [h, a, g, s] [g]
Nous pouvons parcourir un cartésien de la colonne 3 et x pour obtenir les résultats. En outre, plus vite :)
Je reçois ValueError: la longueur des valeurs ne correspond pas la longueur de l'index code>
Je viens de modifier le code. Je viens de le courir à nouveau pour confirmer la sortie. qu'est-ce que vous obtenez pour sortie code>? Ou vos données sont-elles plus de trois rangées, comme partagées ci-dessus?
Col2 est-il pertinent pour la question?
Col3 contient également des listes ou des chaînes?
Col3 contient-il une liste? Comment? Ou est-ce juste une corde avec des lettres?
@ EPI272314 COL3 contient une liste de caractères de chaîne.