簡體   English   中英

熊貓數據框列包含字符串和整數

[英]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'

這是我正在做的事情的鏈接https://deepnote.com/workspace/eddie-abfa350f-f15e-43fe-8960-fab53a2def2e/project/Welcome-e6ac66b9-19f2-4973-bbc2-7adfda9366f3/%2FReasons%20for% 20resignation%20analysis.ipynb

您不能將字符串與<檢查進行比較。 它不會將該字符串與數字相關聯。 該錯誤表示傳入的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM