В пандах у меня в настоящее время есть фрейм данных, содержащий столбец строк: {Urban, Suburban, Rural}. Столбец, который я хотел бы создать, является условным для первого столбца (т. Е. Городской, пригородный, сельский связаны с соответствующими цветами) {Coral, Skyblue, Gold}

Я попытался скопировать первый столбец и затем использовать .replace, но мой новый столбец теперь возвращает значения NaN вместо цветов.

new_column = merge_table["type"]
merge_table["color"] = new_column

color_df = merge_table["color"].replace({'Urban': 'Coral', 'Suburban': 'Skyblue', 'Rural': 'Gold'})



data = pd.DataFrame({'City Type': type,
                           'Bubble Color': color_df    
                          })
data.head()
1
Emily Herc 12 Апр 2019 в 04:25

2 ответа

Лучший ответ

Ты можешь сделать

 merge_table['New col']=merge_table["color"].replace({'Urban': 'Coral', 'Suburban': 'Skyblue', 'Rural': 'Gold'})
1
YOBEN_S 12 Апр 2019 в 01:32

Ладно. в будущем стоит набирать коды с помощью «примеров кода», чтобы мы могли легче просматривать ваш код.

Множество областей может улучшить ваш код. Во-первых, вы делаете все это в одной строке:

merge_table["color"] = merge_table["type"].map(mapping_dictionary)

Series.map () примерно в 4 раза быстрее, чем Series.replace () для вашей информации.

Также другие советы:

  1. никогда не используйте тип в качестве имени переменной, используйте что-то более конкретное, например city_type. тип уже стандартный встроенный метод

    data = pd.DataFrame({'City Type': city_type, 'Bubble Color': color_df})
    
  2. если сделать копию столбца, используйте:

    a_series = df['column_name'].copy()
    
0
See 12 Апр 2019 в 01:51