我有一个来自Excel电子表格的Pandas系列,该电子表格大多是浮动的,但由于货币位于不同的语言环境而无法解析某些字符串:
s = pd.Series(['1,23', '4.56,78', 1, 2.0, np.nan])
我只想选择那些是字符串的项目,以便我可以应用转换:
s[s.apply(type) == str] = s[s.apply(type) == str].str.replace('.', '').str.replace(',', '.')
s.astype(float)
0 1.23
1 456.78
2 1.00
3 2.00
4 NaN
dtype: float64
但是我找不到一种好的(内置,向量化)行方式获取或选择dtypes的方法。有更好的方法吗?
答案 0 :(得分:5)
您可以使用str.translate
同时执行两项操作(转换,更改dtype):
pd.to_numeric(s.str.translate(str.maketrans({'.': '', ',': '.'}))).fillna(s)
0 1.23
1 456.78
2 1.00
3 2.00
4 NaN
dtype: float64
dtype
将是'float64'
。