[英]pandas dataframe column contains string and int
我的數據框年齡列看起來像這樣
20歲以下=14
61歲以上=45
56-60 = 34
31-35 =30
56 歲或以上 =31
21-25 =23
26 30 =56
31 35 =44
36 40 =32
21 25 =26
26-30 =14
46 50 =14
36-40 =15
46-50 =33
41 45 =24
41-45 =29
51-55 =35
所以我寫了這個函數來更好地對其進行分類,但是我收到了這個類型錯誤消息,上面寫着'<'在 str 和 int 的實例之間不支持
def age_buckets(x):
if x < 30:
return '18-29'
elif x < 40:
return '30-39'
elif x < 50:
return '40-49'
elif x < 60:
return '50-59'
elif x < 70:
return '60-69'
elif x >=70:
return '70+'
else: return 'other'
您不能將字符串與<
檢查進行比較。 它不會將該字符串與數字相關聯。 該錯誤表示傳入的x
值是string
。 因此,為了做到這一點, x
必須是一個數字。 如果它實際上是int
,則可以使用int()
函數對其進行轉換。 比如int(x) < 30
...
更好的是您將age_buckets
傳遞給int
而不是string
。 因此,當您調用它時,只需執行age_buckets(int(x))
而不僅僅是age_buckets(x)
請參閱: https ://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html
所以當你做combined['age'] = combined['age'].apply(age_buckets(int(x)))
你實際上需要做 combine combined['age'] = combined['age'].apply(age_buckets,1))
看看 :
def age_buckets(y):
x = int(y)
if x < 30:
...
作品
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.