将10亿美元转换成数字

2024-10-19 14:39:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我从nasdaq网站上检索到一个csv文件,其中包含一些列(股票代码、MarketCap…)。我使用pandas的read_csv获取数据帧。我的问题是无法将MarketCap列的格式转换为数字。 以下是MarketCap列的外观:

MarketCap
$5.54B
$526.85M
$28.41M
nan
nan

理想情况下,我想去掉$符号,把B转换成1'000'000'000,把M转换成1'000'000'000 pandas中的replace/to_replace函数在这里似乎不起作用。 我想按如下方式更新我的数据框:

MarketCap
5'540'000'000'000
526'850'000'000
28'410'000'000
nan
nan

(为了清楚起见,我使用了“作为千位分隔符”)。我不关心nan值,因此现在不能删除/忽略它

我尝试使用pandas的替换方法,如下所示:

df['MarketCap].replace(to_replace= ['B', 'M'], values= ['*1000000000', '*1000000'], inplace=True)

不幸的是,由于列是字符串格式,上面没有应用乘法


Tags: 文件csvtopandasread网站格式数字
1条回答
网友
1楼 · 发布于 2024-10-19 14:39:19

^{}^{}一起使用,然后将多个第一列转换为浮点数,第二列由^{}映射:

df1 = df['MarketCap'].str.strip('$').str.extract(r'(\d+\.\d+)([BM]+)')
df['MarketCap'] = df1[0].astype(float) * df1[1].map({'B': 1000000000, 'M':1000000})

print (df)
      MarketCap
0  5.540000e+09
1  5.268500e+08
2  2.841000e+07
3           NaN
4           NaN

相关问题 更多 >