【发布时间】:2022-06-15 21:44:50
【问题描述】:
将包含“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.
【问题讨论】:
标签: python pandas string format number-formatting