Attention S'il vous plaît, je veux utiliser des "pandas" seulement. Je ne veux pas utiliser lambda ou numpy.
J'ai une trame de données comme indiqué ci-dessous p> je veux appliquer ceci p> Le dernier Dataframe doit donc ressembler à ce p>
3 Réponses :
In [183]: df['shape-type'] = "middle" In [184]: df.loc[(df['first-name'] == 'john') & (df['height-ft'] == 6), 'shape-type'] = "good" In [185]: df.loc[df['height-ft'] == 4, 'shape-type'] = "bad" In [186]: df Out[186]: first-name height-ft shape-type 0 john 6 good 1 peter 5 middle 2 john 4 bad 3 alex 6 middle
sans problème, vous pouvez le faire: avec np.where code>: p>
Merci beaucoup pour la réponse. Voulez-vous ajouter une autre réponse à l'aide de NP.Where?
Vérifier la réponse modifiée
Merci @nyc coder. J'ai écrit ce code mais cela ne fonctionne pas. Souhaitez-vous le corriger? Importer numpy comme np cond1 = df.first-name.eq ('john') & df.height-ft.eq (6) cond2 = df.height-ft.eq (4) df ['type-type'] = np .Sélectionnez ([Cond1, Cond2], [[«BON»], «Bad»], 'M Mainte') DF
Code corrigé: cond1 = df [«premier nom»]. EQ ('John') & df ['hauteur-ft']. EQ (6) cond2 = df ['hauteur-ft']. EQ ( 4) DF ['Type de forme'] = NP.Sélectionnez ([[Cond1, Cond2], [[«Bien»], 'Bad'], 'M Mainte') Imprimer (DF) Code>
Est-ce que cela fonctionne? Si oui, vous pouvez marquer cela comme la réponse
Oui, merci beaucoup. J'apprécie ton aide.
Vous pouvez également faire une fonction à l'aide d'Iterrows () qui ira détester à toutes les lignes de DF, puis vous pouvez appliquer une fonction.
import pandas as pd df = pd.DataFrame({ "first_name": ["john","peter","john","alex"], "height_ft": [6,5,4,6], "shape_type": ["null","null","null","null"] }) print(df) def define_shape_type(first_name, height_ft) : if first_name == 'john' and height_ft == 6 : return "good" elif height_ft == 4 : return "bad" else : return "middle" for index, row in df.iterrows(): df.set_value(index, "shape_type", define_shape_type(row.first_name, row.height_ft)) print(df)
N'est-ce pas la même question que vous avez posée il y a deux jours ici une>?
Cher @ Ben.t Merci pour la réponse, mais celui-ci est différent depuis pour la question passée, je ne pouvais pas obtenir la réponse puisque toutes les réponses utilisées numpy et les noms de colonne étaient sans tiret, donc je ne pouvais donc pas résoudre le problème.
Il n'y a pas de moyen imaginable pour moi que vous pouvez avoir un DF et ne pas pouvoir utiliser NUMPY.
lambda code> est une fonction Sans nom en Python, et
numpy code> est une bibliothèque requise pour
Pandas code>, de sorte que ce sont des restrictions très étranges à placer sur des réponses