为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用对应字典重命名pd.value_counts()索引

如何使用对应字典重命名pd.value_counts()索引

开心每一天1111 2021-04-28 05:53:48
我正在做一value_counts()列代表分类值的整数。我有一个字典,将数字映射到与类别名称相对应的字符串。我想找到具有相应名称的索引的最佳方法。由于我对我的4行解决方案不满意。我目前的解决方案df = pd.DataFrame({"weather": [1,2,1,3]})df>>>   weather0        11        22        13        3weather_correspondance_dict = {1:"sunny", 2:"rainy", 3:"cloudy"}现在,我如何解决问题:df_vc = df.weather.value_counts()index = df_vc.index.map(lambda x: weather_correspondance_dict[x] )df_vc.index = indexdf_vc>>>sunny     2cloudy    1rainy     1dtype: int64问题我对那种非常乏味的解决方案不满意,您是否有针对这种情况的最佳实践?
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

这是我的解决方案:


>>> weather_correspondance_dict = {1:"sunny", 2:"rainy", 3:"cloudy"}

>>> df["weather"].value_counts().rename(index=weather_correspondance_dict)

    sunny     2

    cloudy    1

    rainy     1

    Name: weather, dtype: int64


查看完整回答
反对 回复 2021-05-11
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这是一个更简单的解决方案:


weathers = ['sunny', 'rainy', 'cloudy']

weathers_dict = dict(enumerate(weathers, 1))


df_vc = df['weather'].value_counts()

df_vc.index = df_vc.index.map(weathers_dict.get)

解释

  • 使用dictwithenumerate构造一个字典,将整数映射到天气类型列表。

  • dict.get与一起使用pd.Index.map。与不同pd.Series.apply,您不能直接传递字典,但可以传递可调用函数。

  • 直接更新索引,而不使用中间变量。


或者,您可以weather在使用之前将地图应用于pd.Series.value_counts。这样,您无需更新结果索引。

df['weather'] = df['weather'].map(weathers_dict)
df_vc = df['weather'].value_counts()


查看完整回答
反对 回复 2021-05-11
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

分类数据

您可以将分类数据用于pd.CategoricalIndex.rename_categories

s = df['weather'].value_counts()
s.index = pd.Categorical(s.index).rename_categories(weather_correspondance_dict)

此功能在Pandas v0.21 +中可用。


查看完整回答
反对 回复 2021-05-11
  • 3 回答
  • 0 关注
  • 474 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信