如何将包含字符串 "10%" 和 "0.10" 类型的 Pandas series 转换为数值类型?
如果 series 只包含 "0.10" 类型的字符串,可以使用 pd.to_numeric。
如果 series 包含 "10%" 类型的字符串,可以使用 str.replace("%","") 去掉百分号,并使用 pd.to_numeric 然后除以 100。
问题是如何处理同时包含 "0.10" 和 "10%" 类型字符串的 series。如何最好地将其转换为正确的数值类型系列?
可以先创建一个临时系列,根据字符串中是否有 "%" 分别赋值为 True 或 False,然后根据此应用函数进行转换。但这似乎效率不高。是否有更好的方法?
参考尝试:
如果 series 只包含 "0.10" 类型的字符串,可以使用 pd.to_numeric。
如果 series 包含 "10%" 类型的字符串,可以使用 str.replace("%","") 去掉百分号,并使用 pd.to_numeric 然后除以 100。
问题是如何处理同时包含 "0.10" 和 "10%" 类型字符串的 series。如何最好地将其转换为正确的数值类型系列?
可以先创建一个临时系列,根据字符串中是否有 "%" 分别赋值为 True 或 False,然后根据此应用函数进行转换。但这似乎效率不高。是否有更好的方法?
参考尝试:
mixed = pd.Series(["10%","0.10","5.5%","0.02563"])
mixed.str.replace("%","").astype("float")/100
0 0.100000
1 0.001000
2 0.055000
3 0.000256
dtype: float64
# This doesn't work, because even the 0.10 and 0.02563 are divided by 100.