![](/img/trans.png)
[英]Getting error in dataframe typeError: 'Series' objects are mutable, thus they cannot be hashed
[英]Getting a TypeError: 'Series' objects are mutable, thus they cannot be hashed when using a function to convert a int in a column to a season
我有一個名為“溫度”的數據框,其中包含一個值為 1 - 12 的月份列,我編寫了一個 function 來獲取月份編號並返回獲取數據的南半球的季節。
def find_season(month):
season_month = {
12:'Summer', 1:'Summer', 2:'Summer',
3:'Autumn', 4:'Autumn', 5:'Autumn',
6:'Winter', 7:'Winter', 8:'Winter',
9:'Spring', 10:'Spring', 11:'Spring'}
return season_month.get(month)
我想實現如下output
Year Month Season
1955 2 Summer
1955 3 Autumn
1955 7 Winter
1955 12 Summer
但是當我 go 使用我的公式填充季節列時
temperatures['Season'] = temperatures.apply(find_season(temperatures.Month))
OR
temperatures['Season'] = find_season(temperatures.Month)
我得到錯誤
TypeError: 'Series' objects are mutable, thus they cannot be hashed.
我寧願使用 function,因為我覺得這段代碼可能對我正在做的其他分析有用,但無法弄清楚如何解決我面臨的問題。
錯誤是說字典中的鍵必須是常量、不可變的 object,就像示例中的字符串或數字一樣。
我看不出你是如何從那個代碼中得到那個錯誤的,所以我猜這是一個例子,在你的真實代碼中你正在做溫度[x],x是一個指向object系列的變量,這就是問題所在; Series 類型的對象不是常量,因此不能用作字典中的鍵。
這是解決方案:
def find_season(month):
season_month = {
12:'Summer', 1:'Summer', 2:'Summer',
3:'Autumn', 4:'Autumn', 5:'Autumn',
6:'Winter', 7:'Winter', 8:'Winter',
9:'Spring', 10:'Spring', 11:'Spring'}
return season_month.get(month)
temperatures={}
temperatures["Month"]=[1,2,3,4,5,6,7,8,9,10,11,12]
seasonlist=[]
for month in temperatures["Month"]:
season = find_season(month)
seasonlist.append(season)
temperatures["Season"] = seasonlist
print(temperatures)
Output:
{'Month': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 'Season': ['Summer', 'Summer', 'Autumn', 'Autumn', 'Autumn', 'Winter', 'Winter', 'Winter', 'Spring', 'Spring', 'Spring', 'Summer']}
所以你的代碼中有幾個錯誤,一個是你試圖從溫度字典( temperatures.Month
)中獲取 Month 屬性,你應該參考它的鍵值: temperatures["Month"]
另一個問題是temperatures["Month"]
是一個列表,您將它傳遞給一個 function ,它采用單個數字。 您需要遍歷月份數組才能獲得每個月的季節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.