从字符串转换整数数据类型

时间:2019-07-28 13:08:38

标签: python pandas

我正在处理一个数据框系列的列,其数据类型为“对象”(str)。 其格式为“ 301,694”。

我希望熊猫系列中该列的数据类型为int或float。 尝试以下代码时收到错误。

请分享知识。

1)

df2['Total Ballots Counted'] = df2['Total Ballots Counted'].fillna(0).astype(int)

收到错误-以10为底的int()无效文字:'301,694'

2)

df2['Total Ballots Counted'] = pd.to_numeric(df2['Total Ballots Counted'])

收到错误-无法解析位置1的字符串“ 301,694”

4 个答案:

答案 0 :(得分:0)

您可以尝试

df['Total Ballots Counter'].astype(str).str.replace(',', '').astype(int)

答案 1 :(得分:0)

希望这会有所帮助: df['colname'] = df['colname'].replace(',', '').astype(int)

另一件事是:

int(''.join([i for i in str(number).split('') if i is not ',']))(该列中的每个数字)。

答案 2 :(得分:0)

使用

pd.to_numeric(df2['Total Ballots Counted'].replace({',':'.'},regex=True), errors='coerce')

答案 3 :(得分:0)

@LazyCoder的建议帮助了我。我拆分了字符串,并通过硬代码删除了逗号。然后转换为整数。 “ replace”函数无法以某种方式工作,因为“,”是字符串的一部分,而不是独立的字符串。例如。 “ 301,694”。

def remove_coma(item):   
   str2=''
   for i in item:
           if i is not ',':                             
               str2 += str2.join(i)
   return int(str2)          

df['Total Ballots Counted'] = df['Total Ballots Counted'].apply(lambda item:remove_coma(item)) 

如果有更好更好的捷径,请分享。