首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫--如何在DataFrame系列中用零值替换字符串?

熊猫--如何在DataFrame系列中用零值替换字符串?
EN

Stack Overflow用户
提问于 2015-10-30 16:04:24
回答 3查看 34.1K关注 0票数 5

我正在将一些csv数据导入到Pandas DataFrame中(用Python)。一个系列是指所有的数值。然而,它也包含一些虚假的"$-“元素,表示为字符串。这些都是从以前的格式中遗留下来的。如果我只是导入该系列,Pandas将其报告为一系列的“object”。

用零替换这些"$-“字符串的最佳方法是什么?或者更广泛地说,我如何用数值替换一个系列(主要是数字)中的所有字符串,并将序列转换为浮点类型?

  • 史蒂夫
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-30 16:13:50

使用Series.str.replaceSeries.astype

代码语言:javascript
复制
df = pd.Series(['2$-32$-4','123$-12','00123','44'])
df.str.replace(r'\$-','0').astype(float)

0    203204
1    123012
2       123
3        44
dtype: float64
票数 3
EN

Stack Overflow用户

发布于 2015-10-30 16:15:17

您可以使用DataFrameDataFrame方法,通过convert_numeric=True将字符串更改为NaNs

从医生那里:

convert_numeric:如果是真的话,尝试强迫数字(包括字符串),不可转换的值变成NaN。

代码语言:javascript
复制
In [17]: df
Out[17]: 
    a   b  c
0  1.  2.  4
1  sd  2.  4
2  1.  fg  5

In [18]: df2 = df.convert_objects(convert_numeric=True)

In [19]: df2
Out[19]: 
    a   b  c
0   1   2  4
1 NaN   2  4
2   1 NaN  5

最后,如果要将这些NaNs转换为0,可以使用df.replace

代码语言:javascript
复制
In [20]: df2.replace('NaN',0)
Out[20]: 
   a  b  c
0  1  2  4
1  0  2  4
2  1  0  5
票数 11
EN

Stack Overflow用户

发布于 2021-01-31 09:21:28

使用.to_numeric将字符串转换为数字(使用错误选项‘胁迫’将字符串设置为NaN ):

代码语言:javascript
复制
df = pd.to_numeric(df, errors='coerce')

然后使用替换将NaN值转换为零:

代码语言:javascript
复制
df.replace('NaN',0)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33440234

复制
相关文章

相似问题

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