Pandas 中如何将货币转换为浮点数,并处理负数

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
Python

我们需要将这些字符串转换为浮点数以进行数学计算,那么该怎么办呢?我们可以使用 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
Python

现在,我们已经将货币列 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)
Python

我们需要将带括号的负数金额转换为浮点数,并确保其为负数。我们可以使用 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
Python

在这段代码中,我们编写了一个自定义函数 convert_to_float,该函数首先检测字符串是否以括号包围,如果是,则将其转换为负数,否则将其转换为正数。我们使用 apply() 方法将该函数应用于每个值,并将列转换为 float 类型。

总结

本文介绍了 Pandas 中将货币列转换为浮点数,以及处理带括号表示负数的货币列的方法。我们使用了 Pandas 中的 str 属性中的 replace() 方法,将货币符号 $ 替换为为空字符串,再将字符串列转换为 float 类型。对于带括号的负数金额,我们编写了一个自定义转换函数,并使用 apply() 方法将其应用于每个值。您现在可以在 Pandas 中轻松地操作货币列了。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册