如何解决列中的混合数据类型:以 10 为基数的 int() 的文字无效
我正在尝试将名为“service_id”的列转换为整数类型。但是,该列作为字符串,其值类似于 1_spl。除此之外还有很多这样的独特字符串。我想将它们全部(即所有字符串)归为一个类别并命名为“4”。鉴于“service_id”中的所有其他值都是整数类型。我可以将整列转换为整数类型。
service_id value
1_spl 23
2 45
2 2
3 39
3 13
2_spl 16
3_spl 47
3 15
2 9
我尝试了什么?
df = pd.read_csv("data.txt",delimiter = "\t",dtype={'service_id':np.int64})
df['service_id'].astype(str).astype(int)
df['service_id']=df['service_id'].astype(int)
报错
invalid literal for int() with base 10
解决方法
您可以使用 pandas.to_numeric
并将 errors
作为 coerce
传递,它将所有非数字值转换为 NaN
,然后您可以使用 .loc
和isna()
将这些 NaN
值更改为您想要的任何值。
df['converted'] = pd.to_numeric(df['service_id'],errors='coerce')
df.loc[df['converted'].isna(),'converted'] = 4
df
service_id value converted
0 1_spl 23 4.0
1 2 45 2.0
2 2 2 2.0
3 3 39 3.0
4 3 13 3.0
5 2_spl 16 4.0
6 3_spl 47 4.0
7 3 15 3.0
8 2 9 2.0
此外,如果需要,您可以将新列 converted
类型转换为整数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。