pandas 无法分析pd read_csv中Int64的字符串

uqdfh47h  于 2023-09-29  发布在  其他
关注(0)|答案(2)|浏览(160)

Pandas 2.0.0在解析Int64对象时似乎没有正确考虑thousands=','

  1. import io
  2. pd.read_csv(io.StringIO('''a\n22,922'''), sep='\t', dtype={'a': 'Int64'}, thousands=',')

具体错误为:

  1. Traceback (most recent call last):
  2. File pandas/_libs/lib.pyx:2280 in pandas._libs.lib.maybe_convert_numeric
  3. ValueError: Unable to parse string "22,922"

有没有一种解决方法,不涉及回到不可空的int或转换为float?我已经确认这适用于旧的dtype dtype={'a': 'int'}dtype={'a': 'float'}

pkmbmrz7

pkmbmrz71#

实际上,即使您没有指定thousands参数,也会触发错误。这是一个开放的问题(* 参见 * GH52594)。在使用C引擎调用read_csv时,您还不能应用nullable dtype
一个简单的解决方法是使用astype

  1. (
  2. pd.read_csv(
  3. io.StringIO('''a\n22,922'''), sep='\t', thousands=',')
  4. .astype(dtype={'a': 'Int64'}) # add this line
  5. )
  6. a
  7. 0 22922
2skhul33

2skhul332#

默认引擎是c,您希望使用python

  1. pd.read_csv(io.StringIO('''a\n22,922'''), sep='\t', dtype={'a': 'Int64'}, thousands=',', engine='python')

输出

  1. a
  2. 0 22922

相关问题