基于现有列的条件创建新列的最干净方法是什么?

时间:2019-04-12 01:25:46

标签: pandas calculated-columns

在大熊猫中,我目前有一个数据框,其中包含一串字符串:{城市,郊区,农村}。我要创建的列以第一列为条件(即城市,郊区,农村与相应的颜色相关联){珊瑚色,天蓝色,金色}

我尝试复制第一列,然后使用.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()

2 个答案:

答案 0 :(得分:1)

您可以

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

答案 1 :(得分:0)

好的。将来,值得使用“代码示例”键入代码,以便我们可以更轻松地查看您的代码。

很多地方可以改善您的代码。首先,您需要一行完成全部操作:

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

Series.map()大约比Series.replace()快4倍。

其他提示:

  1. 切勿使用type作为变量名,而应使用诸如city_type之类的更具体的名称。类型已经是标准的内置方法

    data = pd.DataFrame({'City Type': city_type, 'Bubble Color': color_df})
    
  2. 如果要复制列,请使用:

    a_series = df['column_name'].copy()