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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果值是字符串,Pandas DataFrame会执行某些操作相关的知识,希望对你有一定的参考价值。

我有一个名为'Amount'列的表。单元格值是诸如1,100和1000的数字的混合,以及诸如'(1000)'和'(999)'的字符串,其表示负值。如何将负值的字符串更改为数字,如-1000和-999?我不知道如何在熊猫数据框架上应用条件。

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

以上是关于如果值是字符串,Pandas DataFrame会执行某些操作的主要内容,如果未能解决你的问题,请参考以下文章

根据时间对 pandas DataFrame 进行子集化

数据分析 Pandas基本结构

pandas截取字符串固定长度

美化 Pandas DataFrame,其实特简单

pandas(12):数据清洗(缺失值)

如果 Pandas DataFrame 不包含某些子字符串