Utwórz nową kolumnę w ramce danych pythona 3 (pandy) na podstawie wartości w innej kolumnie
Aug 16 2020
Mam ramkę danych pandy, w której muszę utworzyć nowe kolumny na podstawie wartości z innych kolumn w ramce danych. Oto ramka danych
osoba miasto stan kraj
Chicago w stanie Illinois w USA
B Phoenix, Arizona, USA
C San Diego, Kalifornia, USA
Chcę utworzyć dwie nowe kolumny na podstawie wartości w stanie
- Utwórz nową kolumnę df ["city-north"] = df ['city'], gdzie stan = "Illinois"
- Utwórz nową kolumnę df ["city-south"] = df ['city'], gdzie stan nie jest równy „Illinois”
próbowałem
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
Ale drugi wiersz kodu, w którym nie jest równy warunkowi, nie tworzy kolumny „miasto-południe”. Proszę pomóż
Odpowiedzi
1 jezrael Aug 16 2020 at 13:10
U mnie działa dobrze, jeśli nie utworzono warunków dopasowania, brakujące wartości:
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
W razie potrzeby puste ciągi wartości dla niedopasowanych wierszy:
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