Crea una nuova colonna nel dataframe python 3 (panda) in base al valore in un'altra colonna
Aug 16 2020
Ho un dataframe panda in cui devo creare nuove colonne basate sui valori di altre colonne nel dataframe. Ecco il dataframe
persona città stato paese
Un Chicago Illinois Stati Uniti d'America
B Phoenix Arizona Stati Uniti
C San Diego California USA
Voglio creare due nuove colonne basate sui valori in state
- Crea una nuova colonna df["city-north"] = df['city'] dove state = "Illinois"
- Crea una nuova colonna df["city-south"] = df['city'] dove lo stato non è uguale a "Illinois"
Provai
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
Ma la seconda riga di codice in cui non è uguale alla condizione non crea la colonna "città-sud". Per favore aiuto
Risposte
1 jezrael Aug 16 2020 at 13:10
Per me funziona bene, se non vengono create condizioni di corrispondenza valori mancanti:
df.loc[df['state'] == 'Illinois', 'city-north'] = df['city']
df.loc[df['state'] != 'Illinois', 'city-south'] = df['city']
print (df)
person city state country city-north city-south
0 A Chicago Illinois USA Chicago NaN
1 B Phoenix Arizona USA NaN Phoenix
2 C San Diego California USA NaN San Diego
Se hai bisogno di stringhe di valori vuoti per righe non abbinate:
df['city-north'] = np.where(df['state'] == 'Illinois', df['city'], '')
df['city-south'] = np.where(df['state'] != 'Illinois', df['city'], '')
print (df)
person city state country city-north city-south
0 A Chicago Illinois USA Chicago
1 B Phoenix Arizona USA Phoenix
2 C San Diego California USA San Diego