gpt4 book ai didi

python - 如何忽略 pandas.to_numeric() 中的错误并将字符串更改为 int

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:30 32 4
gpt4 key购买 nike

我收到来自 pandas.to_numeric() 的意外响应。如果我使用 to_numeric

    a = pd.Series(['1', '2', '3', np.nan])
b = pd.to_numeric(a, downcast='integer', errors='ignore')
print([type(each) for each in b])

响应是:[float, float, float, float]

但是如果我在系列中有真正的 str,比如

    a = pd.Series(['1', '2', '3', np.nan, 'a'])
b = pd.to_numeric(a, downcast='integer', errors='ignore')
print([type(each) for each in b])

它返回[str, str, str, float, str]

文档说:

If ‘ignore’, then invalid parsing will return the input

而且我认为无效解析只是'a',所以我应该得到:[float, float, float, float, str]

问题是如何修复它并得到[float, float, float, float, str]

最佳答案

一种可能的解决方案是使用 errors='coerce'将缺失值替换为原始值 - 所以最后 a在最后 Series :

a = pd.Series(['1', '2', '3', np.nan, 'a'])
b = pd.to_numeric(a, errors='coerce').fillna(a)
print([type(each) for each in b])
[<class 'float'>, <class 'float'>, <class 'float'>, <class 'float'>, <class 'str'>]

另一个想法是将函数与 try-exception 一起使用 block :

a = pd.Series(['1', '2', '3', np.nan, 'a'])

def func(x):
try:
return int(x)
except Exception:
return x

b = a.apply(func)
print([type(each) for each in b])
[<class 'int'>, <class 'int'>, <class 'int'>, <class 'float'>, <class 'str'>]

如果可能的话,整数和字符串表示中的浮点值:

a = pd.Series(['1', '2', '3.3', np.nan, 'a'])

def func(x):
try:
return int(x)
except Exception:
try:
return float(x)
except Exception:
return x

b = a.apply(func)
print([type(each) for each in b])
[<class 'int'>, <class 'int'>, <class 'float'>, <class 'float'>, <class 'str'>]

关于python - 如何忽略 pandas.to_numeric() 中的错误并将字符串更改为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474599/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com