我认为以下应该有效:
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
Run Code Online (Sandbox Code Playgroud)
如果需要,您还可以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
Run Code Online (Sandbox Code Playgroud)
另一种方法是format
使用apply
以下方法对每个值应用 a :
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
Run Code Online (Sandbox Code Playgroud)
但是,我希望第一种方法可以更好地扩展大型数据集,尽管有时列表理解在字符串方面会更快
这是列表理解方法:
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
Run Code Online (Sandbox Code Playgroud)