我正在处理一个数据框系列的列,其数据类型为“对象”(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”
答案 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))
如果有更好更好的捷径,请分享。