'numpy.int64' object has no attribute 'startswith'解决办法

本文介绍如何解决在Python Pandas中处理包含特定字符开头的字符串时遇到的问题,特别是当数据集中存在数字和缺失值时。通过将涉及列的数据类型统一转换为字符串类型,可以避免类型不匹配导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想要通过遍历数据中的给出的几个列,匹配某些字符开头的字符串,如果有,则新建的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


AttributeError Traceback (most recent call last) Cell In[16], line 2 1 #os.environ["HF_ENDPOINT"] = "http://localhost:8000" ----> 2 trainer.train() File d:\anaconda\lib\site-packages\transformers\trainer.py:2241, in Trainer.train(self, resume_from_checkpoint, trial, ignore_keys_for_eval, **kwargs) 2239 hf_hub_utils.enable_progress_bars() 2240 else: -> 2241 return inner_training_loop( 2242 args=args, 2243 resume_from_checkpoint=resume_from_checkpoint, 2244 trial=trial, 2245 ignore_keys_for_eval=ignore_keys_for_eval, 2246 ) File d:\anaconda\lib\site-packages\transformers\trainer.py:2639, in Trainer._inner_training_loop(self, batch_size, args, resume_from_checkpoint, trial, ignore_keys_for_eval) 2636 self.control.should_training_stop = True 2638 self.control = self.callback_handler.on_epoch_end(args, self.state, self.control) -> 2639 self._maybe_log_save_evaluate(tr_loss, grad_norm, model, trial, epoch, ignore_keys_for_eval, start_time) 2641 if DebugOption.TPU_METRICS_DEBUG in self.args.debug: 2642 if is_torch_xla_available(): 2643 # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) File d:\anaconda\lib\site-packages\transformers\trainer.py:3085, in Trainer._maybe_log_save_evaluate(self, tr_loss, grad_norm, model, trial, epoch, ignore_keys_for_eval, start_time) ... 169 else: --> 170 if not chunk.startswith(('B-', 'I-', 'E-', 'S-')): 171 warnings.warn('{} seems not to be NE tag.'.format(chunk)) AttributeError: 'numpy.int64' object has no attribute 'startswith'
03-18
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值