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 +中可用。
添加回答
舉報