gpt4 book ai didi

python - 如果值是字符串,Pandas DataFrame 会执行某些操作

转载 作者:行者123 更新时间:2023-12-01 09:04:29 25 4
gpt4 key购买 nike

我有一个表,其中有一列名为“金额”。单元格值是数字(例如 1、100 和 1000)和字符串(例如表示负值的“(1000)”和“(999)”的混合。如何将负值字符串更改为数字,例如 -1000 和 -999?我不知道如何对 panda 数据框应用条件。

import pandas as pd
ws_actual = pd.read_excel(file_name, sheet_name=0)


Project Name Amount
a 1000.53
b (-100.2)
c 999.83
d 99999.1
e 333.62
f (-10502.30)
g (-2036.63)
h 25235
i 69103
j 5923
k 6920

最佳答案

只需使用strip。尽管在您的问题中,括号中的值是否包含负号或者括号是否需要用负号替换是不明确的。如果是后者,您将需要一个正则表达式。

df.Amount.astype(str).str.strip('()').astype(float)

0      1000.53
1 -100.20
2 999.83
3 99999.10
4 333.62
5 -10502.30
6 -2036.63
7 25235.00
8 69103.00
9 5923.00
10 6920.00
Name: Amount, dtype: float64

如果您有诸如 (1000) 之类的字符串也需要转换为负数:

print(df)

ProjectName Amount
0 a (1000)
1 b 100
2 c (999)

df.Amount.astype(str).str.replace(r'\(([-\d\.]+)\)', r'-\1').astype(float)

0   -1000.0
1 100.0
2 -999.0
Name: Amount, dtype: float64

关于python - 如果值是字符串,Pandas DataFrame 会执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52175020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com