将包含“10%”和“0.10”类型字符串的 Pandas 系列转换为数值的最佳方法是什么?
我知道如果我有一个只有“0.10”类型字符串的系列,我可以这样做pd.to_numeric。
我也知道,如果我有一系列“10%”类型的字符串,我可以做str.replace("%","")然后做pd.to_numeric除以 100。
我遇到的问题是混合了“0.10”和“10%”类型字符串的系列。如何最好地将其转换为具有正确数字类型的系列。
我想我可以通过首先使用 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.
Run Code Online (Sandbox Code Playgroud)