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
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)
解释
使用
dict
withenumerate
构造一个字典,将整数映射到天气类型列表。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()
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 +中可用。
添加回答
举报