首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果值是字符串,则Pandas DataFrame会执行某些操作

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

Stack Overflow用户
提问于 2018-09-05 07:01:19
回答 1查看 622关注 0票数 2

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-05 07:16:07

只需使用strip即可。尽管在你的问题中,如果圆括号中的值包含负号,或者如果圆括号需要用负号替换,这是不明确的。如果是后者,那么这里需要一个正则表达式。

代码语言:javascript
复制
df.Amount.astype(str).str.strip('()').astype(float)

代码语言:javascript
复制
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) )也需要转换为负数:

代码语言:javascript
复制
print(df)

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

代码语言:javascript
复制
df.Amount.astype(str).str.replace(r'\(([-\d\.]+)\)', r'-\1').astype(float)

代码语言:javascript
复制
0   -1000.0
1     100.0
2    -999.0
Name: Amount, dtype: float64
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52175020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档