gpt4 book ai didi

python - 将 $1B 转换为数字

转载 作者:行者123 更新时间:2023-12-03 21:58:57 24 4
gpt4 key购买 nike

我从 nasdaq 网站检索了一个包含几列(Ticker、MarketCap...)的 csv 文件。我使用 Pandas 的 read_csv 来获取数据框。我的问题是我无法将 MarketCap 列的格式转换为数字。
这是 MarketCap 列的样子:

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

理想情况下,我想删除 $ 符号并将 B 转换为 1'000'000'000 并将 M 转换为 1'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)

不幸的是,由于该列是字符串格式,因此上述不适用乘法。

最佳答案

使用 Series.str.strip Series.str.extract ,然后多个第一列转换为浮点数,第二列由 Series.map 映射:

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

关于python - 将 $1B 转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60703585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com