我有一个数据框: pd.DataFrame({"Amount":[19000000, 9873200, 823449242]}),我需要将数字转换为以百万计的货币($)。即 $19.00MM、$9.88MM 和 $823.45MM。
有谁知道一个快速的方法来做到这一点?
Thanks!
我认为以下应该有效:
df['($) millions'] = '$' + (df['Amount'].astype(float)/1000000).astype(str) + 'MM'
In [3]:
df['($) millions'] = '$' + (df['Amount'].astype(float)/1000000).astype(str) + 'MM'
df
Out[3]:
Amount ($) millions
0 19000000 $19.0MM
1 9873200 $9.8732MM
2 823449242 $823.449242MM
如果需要的话你也可以round
:
In [5]:
df['($) millions'] = '$' + (df['Amount'].astype(float)/1000000).round(2).astype(str) + 'MM'
df
Out[5]:
Amount ($) millions
0 19000000 $19.0MM
1 9873200 $9.87MM
2 823449242 $823.45MM
另一种方法是应用format
对每个值使用apply
:
In [15]:
df['($) millions'] = (df['Amount']/1000000).apply(lambda x: '${:,.2f}MM'.format(x))
df
Out[15]:
Amount ($) millions
0 19000000 $19.00MM
1 9873200 $9.87MM
2 823449242 $823.45MM
然而,我希望第一种方法能够更好地适应大型数据集,尽管有时列表理解在处理字符串时速度更快
这是列表理解方法:
In [17]:
df['($) millions'] = ['${:,.2f}MM'.format(x) for x in df['Amount']/1000000]
df
Out[17]:
Amount ($) millions
0 19000000 $19.00MM
1 9873200 $9.87MM
2 823449242 $823.45MM
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)