【问题标题】:Proper way to convert to an int转换为 int 的正确方法
【发布时间】:2020-10-23 13:40:57
【问题描述】:

执行以下操作的正确方法是什么:

df['file_size'] = np.where(df['file_size'], int(df['file_size']), None)

目前我得到的错误是:

TypeError: 无法将系列转换为

当尝试直接这样做时:

df['file_size'] = df['file_size'].astype(int)

ValueError: 无法将非有限值(NA 或 inf)转换为整数

【问题讨论】:

  • 如果我们可以将非整数值转换为 0,那么我认为我们可以使用 df['file_size'] = df['file_size'].fillna(0).astype(int)

标签: python pandas


【解决方案1】:

使用integer_na,因为默认情况下至少有一个缺失值将整数转换为浮点数(因为NaNfloat),所以需要特殊类型Int64来解决这个问题:

df = pd.DataFrame({'file_size':[5,4,np.nan,None]})

df['file_size'] = df['file_size'].astype("Int64")
print (df)
   file_size
0          5
1          4
2       <NA>
3       <NA>

【讨论】:

  • 是的,谢谢。能否请您简要解释一下使用int"Int64" 的区别?
  • int 将尝试使用 numpy dtype(“int64”或更低。注意“int64”中的小写 i 表示 numpy 的 dtype)。 numpy 没有或不支持整数 NA。整数 NA (pd.NA) 是 pandas 所独有的,包含此值的数组具有“Int64”dtype(注意大写 i)。请参阅pandas integer na 了解更多信息。
猜你喜欢
  • 2010-09-23
  • 2011-07-10
  • 2012-08-16
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2014-03-18
相关资源
最近更新 更多