小编dum*_*umb的帖子

Pandas:将包含“10%”和“0.10”等字符串的系列转换为数字

将包含“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)

python string format number-formatting pandas

7
推荐指数
4
解决办法
411
查看次数

标签 统计

format ×1

number-formatting ×1

pandas ×1

python ×1

string ×1