当前位置: 首页 > 面试题库 >

熊猫将字符串转换为int

归泽宇
2023-03-14
问题内容

我有一个带有ID号的大型数据框:

ID.head()
Out[64]: 
0    4806105017087
1    4806105017087
2    4806105017087
3    4901295030089
4    4901295030089

这些现在都是字符串。

我想转换为int不使用循环-为此我使用ID.astype(int)

问题是我的某些行包含无法转换为的脏数据int,例如

ID[154382]
Out[58]: 'CN414149'

如何(不使用循环)删除这些类型的事件,以便我可以astype放心使用?


问题答案:

您需要errors='coerce'向功能添加参数to_numeric

ID = pd.to_numeric(ID, errors='coerce')

如果ID是列:

df.ID = pd.to_numeric(df.ID, errors='coerce')

但非数字会转换为NaN,因此所有值都是float

对于int需要转换NaN到一些值,例如,0然后转换为int

df.ID = pd.to_numeric(df.ID, errors='coerce').fillna(0).astype(np.int64)

样品:

df = pd.DataFrame({'ID':['4806105017087','4806105017087','CN414149']})
print (df)
              ID
0  4806105017087
1  4806105017087
2       CN414149

print (pd.to_numeric(df.ID, errors='coerce'))
0    4.806105e+12
1    4.806105e+12
2             NaN
Name: ID, dtype: float64

df.ID = pd.to_numeric(df.ID, errors='coerce').fillna(0).astype(np.int64)
print (df)
              ID
0  4806105017087
1  4806105017087
2              0

编辑:如果使用0.25+大熊猫,则可以使用integer_na

df.ID = pd.to_numeric(df.ID, errors='coerce').astype('Int64')
print (df)
              ID
0  4806105017087
1  4806105017087
2            NaN


 类似资料:
  • 我有这个“file.csv”文件要和熊猫一起读: 使用 输出为: 我知道,列是一个完整的字符串,因为: 我需要将其作为字符串列表来阅读,如。我尝试了这个问题中提供的解决方案,但没有成功,因为我的和字符实际上会把事情搞砸。 预期输出应为:

  • 问题内容: 我在系列中有一个类别变量。我想为每个唯一值分配整数ID,并使用ID创建一个新的系列,从而有效地将字符串变量转换为整数变量。最紧凑/最有效的方法是什么? 问题答案: 您可以使用pandas.factorize:

  • 问题内容: 我已经阅读了很多SO答案,但是找不到明确的解决方案。 我在称为小时的df中有此数据: 我想将其转换为时间格式。但是当我这样做时: 结果包括今天的日期: 看来参数不起作用-如何获得没有显示日期的时间? 更新资料 以下内容可以正确设置时间格式,但是以某种方式,该列仍然是对象类型。为什么不转换为? 问题答案: 执行转换后,您可以使用datetime访问器仅访问或组件: 另外,您的格式字符串格

  • 问题内容: 我已经读过一个对Pandas的SQL查询,并且值以dtype’object’的形式出现,尽管它们是字符串,日期和整数。我能够将日期“ object”转换为Pandas datetime dtype,但是在尝试转换字符串和整数时遇到错误。 这是一个例子: 将转换为日期时间可以: 但是尝试将转换为整数时出现错误: 注意:我尝试时遇到类似的错误 当尝试转换为字符串时,似乎什么也没有发生。 问

  • 我有一个字段在熊猫DataFrame被导入为字符串格式。它应该是日期时间变量。如何将其转换为日期时间列,然后根据日期进行筛选。 示例: 数据帧名称:原始数据

  • 问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和: