Pandas 中如何将货币转换为浮点数,并处理负数
在本文中,我们将介绍如何使用 Pandas 将带有货币符号的字符串转换为浮点数,并处理在父括号中表示为负数的货币量。
阅读更多:Pandas 教程
1. 转换货币列为浮点数
我们一般会在数据集中遇到金额或货币值的列,如下所示:
import pandas as pd
data = {'amount': ['10.25', '23.13', '-12.55', '50.00']}
df = pd.DataFrame(data)
print(df)
# 输出:
# amount
# 0 10.25
# 123.13
# 2 -12.55
# 350.00
我们需要将这些字符串转换为浮点数以进行数学计算,那么该怎么办呢?我们可以使用 Pandas 中的 str 属性中的 replace() 方法,将货币符号 $ 替换为空字符串 '',再将字符串列转换为 float 类型。示例代码如下:
df['amount'] = df['amount'].str.replace('$','').astype(float)
print(df)
# 输出:
# amount
# 0 10.25
# 1 23.13
# 2 -12.55
# 3 50.00
现在,我们已经将货币列 amount 转换为了浮点数,并可以对其进行数学计算。
2. 处理带括号表示的负数金额
在一些情况下,数据集中的负数金额可能是以带括号的方式表示的,如下所示:
data = {'amount': ['10.25', '23.13', '(12.55)', '50.00', '(30)']}
df = pd.DataFrame(data)
print(df)
# 输出:
# amount
# 010.25
# 1 23.13
# 2 (12.55)
# 3 50.00
# 4 (30)
我们需要将带括号的负数金额转换为浮点数,并确保其为负数。我们可以使用 apply() 方法,在每个值上应用一个函数进行转换,示例代码如下:
def convert_to_float(x):
if '(' in x:
x = '-' + x.replace('(','').replace(')','')
else:
x = x.replace('$','')
return float(x)
df['amount'] = df['amount'].apply(convert_to_float)
print(df)
# 输出:
# amount
# 0 10.25
# 1 23.13
# 2 -12.55
# 3 50.00
# 4 -30.00
在这段代码中,我们编写了一个自定义函数 convert_to_float,该函数首先检测字符串是否以括号包围,如果是,则将其转换为负数,否则将其转换为正数。我们使用 apply() 方法将该函数应用于每个值,并将列转换为 float 类型。
总结
本文介绍了 Pandas 中将货币列转换为浮点数,以及处理带括号表示负数的货币列的方法。我们使用了 Pandas 中的 str 属性中的 replace() 方法,将货币符号 $ 替换为为空字符串,再将字符串列转换为 float 类型。对于带括号的负数金额,我们编写了一个自定义转换函数,并使用 apply() 方法将其应用于每个值。您现在可以在 Pandas 中轻松地操作货币列了。
极客教程