'numpy.int64' object has no attribute 'startswith'解決辦法

想要通過遍歷數據中的給出的幾個列,匹配某些字符開頭的字符串,如果有,則新建的last列的數值加2

Python原始代碼如下:

import pandas as pd
import numpy as np
patient=pd.read_csv(r'C:\Users\Administrator\full_cohort_data2.csv')
last = np.zeros(patient.shape[0])
alist=['Fri','Sa','Th']
colum=['day_icu_intime','service_num','service_unit']
def charlson(day):
    for i in range(1776):
        for j in range(len(alist)):           
            if patient[day][i].startswith(alist[j]):
                last[i]+=2
for k in range(len(colum)):
    charlson(colum[k])
一直出現'numpy.int64' object has no attribute 'startswith',主要是因爲'service_num'這列爲數字,'service_unit'這一列有空值,無法使用pandas的內置的str函數

解決的辦法就是在函數中直接將所有要遍歷的列類型轉換成str,函數修改成這個樣子就可以了:

def charlson(day):
    patient[day]=patient[day].astype(str)#將該列類型轉換爲str,列中的空值會被填補爲nan
    for i in range(1776):
        for j in range(len(alist)):           
            if patient[day][i].startswith(alist[j]):
                last[i]+=2


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章