从熊猫中的混合dtype系列中选择具有给定dtype的行

时间:2019-03-15 19:42:30

标签: python pandas

我有一个来自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的方法。有更好的方法吗?

1 个答案:

答案 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'