python - 从 Pandas 的混合数据类型系列中选择具有给定数据类型的行

标签 python pandas

我有一个来自 Excel 电子表格的 Pandas 系列,它主要是 float ,但有一些字符串未被解析,因为货币位于不同的区域设置:

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

但我找不到一种好的(内置的、矢量化的)方法来逐行获取或选择数据类型。有没有更好的办法?

最佳答案

您可以使用 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'

关于python - 从 Pandas 的混合数据类型系列中选择具有给定数据类型的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189685/

相关文章:

python - 为什么 py2app .app 的启动时间比同一个 python 程序要长?

python - 将元信息/元数据添加到 pandas DataFrame

python - 如何选择特定列中给定值一定距离内的所有 DataFrame 行?

python - 每行比较两列 Pandas 行

python - 如何使用 python-binance : APIError(code=-1111): Precision is over the maximum defined for this asset 下 future 市场订单

python - 从 str 转换为 float 时保持尾随 0

带变量替换的 Python subprocess.call

python - Django QuerySet 不可序列化

python - 如何加速 pandas groupby - 应用函数与 R 的 data.table 相媲美

python - 如何在 3D 图中用一条线连接多个散点?