Создать новый столбец в фрейме данных python 3 (pandas) на основе значения в другом столбце
Aug 16 2020
У меня есть фреймворк pandas, где мне нужно создавать новые столбцы на основе значений из других столбцов в фрейме данных. Вот фрейм данных
человек город государство страна
Чикаго, Иллинойс, США
B Финикс Аризона США
C Сан-Диего Калифорния США
Я хочу создать два новых столбца на основе значений в состоянии
- Создать новый столбец df ["city-north"] = df ['city'], где state = "Illinois"
- Создайте новый столбец df ["city-south"] = df ['city'], где состояние не равно "Illinois"
Я пытался
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
Но вторая строка кода, где не равно условию, не создает столбец «город-юг». Пожалуйста помоги
Ответы
1 jezrael Aug 16 2020 at 13:10
У меня все работает хорошо, если не создаются условия соответствия, отсутствующие значения:
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
Если нужны пустые строки значений для несоответствующих строк:
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