Python 在数据帧中将对象转换为int

Python 在数据帧中将对象转换为int,python,pandas,integer,valueerror,Python,Pandas,Integer,Valueerror,我有一个像这样的数据框 RangeIndex: 144 entries, 0 to 143 Data columns (total 4 columns): Manager ID 144 non-null object Defect Count 144 non-null object Transactions 144 non-null object DPMO 144 non-null object 我想将缺陷计数、事务和DPMO转换为整数来进行一些计算

我有一个像这样的数据框

RangeIndex: 144 entries, 0 to 143
Data columns (total 4 columns):
Manager ID      144 non-null object
Defect Count    144 non-null object
Transactions    144 non-null object
DPMO            144 non-null object
我想将缺陷计数、事务和DPMO转换为整数来进行一些计算。我使用astype将其转换为整数,但它抛出了一个valueError。我试过的那个只是“缺陷计数”。如何一次转换所有3个。我还尝试使用数字,但将大部分数据转换为“NAN”。valueError上的“2721”是缺陷计数的数据之一

Managers_DPMO['Defect Count'] = Managers_DPMO['Defect Count'].astype(str).astype(int)

ValueError: invalid literal for int() with base 10: '2,721'

至少有一个值带有逗号分隔符。 尝试以以下方式读取文件:

df.read_csv('filename.csv', thousands=',')
另一个选择是:

Managers_DPMO['Defect Count']=pd.to_numeric(Managers_DPMO['Defect Count'], downcast='integer')

除了0buz answer,您还可以尝试替换有问题的字符,然后将其转换为int:

Managers_DPMO['Defect Count'] = Managers_DPMO['Defect Count'].str.strip(',.').astype(int)

您需要删除数据中的逗号或其他非数字字符,pandas不知道如何将它们解析为数字您从错误消息中了解了什么?是的,有些值带有逗号。我已经使用append方法创建了df。Managers\u DPMO=Managers\u DPMO.append(pd.Series(value,index=columns),ignore\u index=True)。我相信append没有任何信息,我们将更新我的答案以反映您的评论,但我看到@Celius Stingher击败了我。@学习者您能分享更多您的程序吗?请记住,重复添加到数据帧往往会降低性能。我使用for循环从网站获取我想要的所有值。除了我想要达到的目标之外,还有别的选择吗。@Celius Stingher提到的解决方案适用于单个列,但不适用于多个列。对于范围(0,len(rows))中的i:tds=rows[i]。如果len(tds)==4,则查找_all('td'):value=[tds[0]。text,tds[1]。text,tds[2]。text,tds[3]。text]else:values=[td.text for td in tds]Managers\u DPMO=Managers\u DPMO.append(pd.Series(values,index=columns),ignore\u index=True)方法更改:如果您知道哪些列应该保存
int
数据,则在添加到数据帧之前应用转换,例如int(tds[1].text)