将 Python pandas DataFrame 中的数字格式化为以千或百万为单位的货币

tha*_*eow 3 python format numbers currency pandas

我有一个数据框:pd.DataFrame({"Amount":[19000000, 9873200, 823449242]}),我需要将数字转换为以百万计的货币($)。即 $19.00MM、$9.88MM 和 $823.45MM。

有谁知道一个快速的方法来做到这一点?

谢谢!

EdC*_*ica 5

我认为以下应该有效:

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)