我正在清理pandas中的多个列。我有以下功能来清洁它:
def convert_dash_comma_into_float(num):
if " - " in num:
num = num.replace(" - ", "0.0")
elif "," in num:
num = num.replace(',', '')
try:
return float(num)
except ValueError:
return np.nan
当我将此函数应用于单个列时,它就可以工作了。在
^{pr2}$但是当我试图通过提供一个列表来应用到一系列列中时,因为我有一堆要清理的列表,这会引发TypeError
df[["rpks", 'asks', 'pax']].apply(convert_dash_comma_into_float)
TypeError:(“无法将序列转换为”,'首先发生在索引RPKs')
以下是一些当前对象类型为“O”的示例数据:
rpks asks pax
9.74 194.72 1,752.48
19.47 82.74 700.85
- 360.16 3,679.45
127.03 994.14 7,306.93
53.54 612.75 5,770.53
- 7.02 666.43
34.52 197.28 784.19
- 460.31 5,466.80
- 108.63 1,128.90
- 16.54 913.49
10.52 368.06 3,054.90
93.93 784.55 5,646.55
你不需要在这里使用函数,它会消耗更多的时间。只需使用内置的
replace
,它很快,它也可以将dictionary作为参数,即您可以在函数中使用^{} 。在
但是,我建议您重构逻辑,首先检查
float
,因为如果您的数据具有代表性,那么许多值已经是可接受的格式了。在这里有一个例子。在
applymap
与lambda
相关问题 更多 >
编程相关推荐