栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在熊猫数据框中将字符串2.90K转换为2900或将5.2M转换为5200000

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在熊猫数据框中将字符串2.90K转换为2900或将5.2M转换为5200000

假设您具有以下DF:

In [30]: dfOut[30]:         Date      Val0  2016-09-23      1001  2016-09-22    9.60M2  2016-09-21   54.20K3  2016-09-20  115.30K4  2016-09-19   18.90K5  2016-09-16  176.10K6  2016-09-15   31.60K7  2016-09-14   10.00K8  2016-09-13    3.20M

您可以这样操作:

In [31]: df.Val = (df.Val.replace(r'[KM]+$', '', regex=True).astype(float) *    ....:df.Val.str.extract(r'[d.]+([KM]+)', expand=False)   ....:  .fillna(1)   ....:  .replace(['K','M'], [10**3, 10**6]).astype(int))In [32]: dfOut[32]:         Date        Val0  2016-09-23      100.01  2016-09-22  9600000.02  2016-09-21    54200.03  2016-09-20   115300.04  2016-09-19    18900.05  2016-09-16   176100.06  2016-09-15    31600.07  2016-09-14    10000.08  2016-09-13  3200000.0

说明:

In [36]: df.Val.replace(r'[KM]+$', '', regex=True).astype(float)Out[36]:0    100.01      9.62     54.23    115.34     18.95    176.16     31.67     10.08      3.2Name: Val, dtype: float64In [37]: df.Val.str.extract(r'[d.]+([KM]+)', expand=False)Out[37]:0    NaN1      M2      K3      K4      K5      K6      K7      K8      MName: Val, dtype: objectIn [38]: df.Val.str.extract(r'[d.]+([KM]+)', expand=False).fillna(1)Out[38]:0    11    M2    K3    K4    K5    K6    K7    K8    MName: Val, dtype: objectIn [39]: df.Val.str.extract(r'[d.]+([KM]+)', expand=False).fillna(1).replace(['K','M'], [10**3, 10**6]).astype(int)Out[39]:0          11    10000002       10003       10004       10005       10006       10007       10008    1000000Name: Val, dtype: int32


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号