python - 从 Pandas 中的混合 dtype 系列中选择具有给定 dtype 的行
问题描述
我有一个来自 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。有没有更好的办法?
解决方案
您可以使用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 - 在这段代码中是否有任何 numpy 技巧可以避免 for 循环?
- python - 海拔(在 pyephem body.compute 中)是大地高度吗?还是地心高度?
- c - 如何在 MPI 中处理信号
- javascript - 禁用编辑ckeditor 4的元素
- java - 如何在 60 秒后停止在 java 中运行的方法
- c - 在 C 中,如何将 -o 合并为命令行参数,以将输出写入另一个文件而不是标准输出?
- php - Laravel 雄辩加入 ajax
- python - Python:比较列表中条目之间的距离并在距离小于特定数字时替换条目?
- mysql - MySQL - 具有许多条件的查询性能
- java - 我无法通过 Firebase 登录 Google。Google 按钮只是没有响应