如何在Python中将表示为字符的数字转换为数字

发布于 2021-01-29 14:57:36

我的数据框中有一列,其值类似于‘3.456B’,实际上代表34.56亿(和百万表示法类似)。如何将此字符串形式转换为正确的数字表示形式?

这显示了数据帧:

import pandas as pd
data_csv = pd.read_csv('https://biz.yahoo.com/p/csv/422conameu.csv')
data_csv

这是一个样本值:

data_csv['Market Cap'][0]
type(data_csv['Market Cap'][0])

我尝试了这个:

data_csv.loc[data_csv['Market Cap'].str.contains('B'), 'Market Cap'] = data_csv['Market Cap'].str.replace('B', '').astype(float).fillna(0.0)
data_csv

但不幸的是,最后还有带“ M”的值,表示百万。它返回错误,如下所示:

ValueError: invalid literal for float(): 6.46M

如何在此列中用适当的值替换B和M?有更好的方法吗?

关注者
0
被浏览
106
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    假设所有条目的末尾都有一个字母,则可以执行以下操作:

    d = {'K': 1000, 'M': 1000000, 'B': 1000000000}
    df.loc[:, 'Market Cap'] = pd.to_numeric(df['Market Cap'].str[:-1]) * \
        df['Market Cap'].str[-1].replace(d)
    

    这会将除最后一个字符以外的所有内容转换为数字值,然后将其乘以等效于最后一个字符中字母的数字。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看