2 votes

pandas new column if statement

J'ai un cadre de données pour lequel je voudrais ajouter une valeur de colonne en utilisant une instruction if. J'ai essayé une fonction lambda mais je n'ai pas eu de chance. Je veux ajouter une colonne qui dit que si le seuil< l'ordre, alors la nouvelle colonne est le seuil, sinon la colonne est l'ordre.

df_new

  Order       Threshold  
 20,000        100,000
 500,000       50,000
 100,000       75,000

J'ai essayé :

 df_new['New Column'].apply(lambda x: df_new['Threshold'] if < df_new['Order'] else df_new['Order Quantity'])

3voto

jpp Points 83462

Parfois, il est utile d'utiliser un algorithme qui évite if / else les constructions. La solution ci-dessous est probablement plus efficace et, de plus, ajoute une certaine logique intuitive.

import pandas as pd, numpy as np

df = pd.DataFrame({'Order': [20000, 500000, 100000],
                   'Threshold': [100000, 50000, 75000]})

df['New'] = np.minimum(df['Threshold'], df['Order'])

#     Order  Threshold    New
# 0   20000     100000  20000
# 1  500000      50000  50000
# 2  100000      75000  75000

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X