Python 熊猫-如何在数据帧系列中用零值替换字符串?
我正在将一些csv数据导入Pandas数据框(在Python中)。一个系列意味着所有数值。但是,它还包含一些表示为字符串的伪“$-”元素。这些是以前的格式设置留下的。如果我只是导入该系列,Pandas会将其报告为一系列“对象” 用零替换这些“$-”字符串的最佳方法是什么?或者更一般地说,如何用数值替换序列中的所有字符串(主要是数字),并将序列转换为浮点类型Python 熊猫-如何在数据帧系列中用零值替换字符串?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在将一些csv数据导入Pandas数据框(在Python中)。一个系列意味着所有数值。但是,它还包含一些表示为字符串的伪“$-”元素。这些是以前的格式设置留下的。如果我只是导入该系列,Pandas会将其报告为一系列“对象” 用零替换这些“$-”字符串的最佳方法是什么?或者更一般地说,如何用数值替换序列中的所有字符串(主要是数字),并将序列转换为浮点类型 史蒂夫 使用Series.str.replace和Series.astype df = pd.Series(['2$-32$-4','12
- 史蒂夫
Series.str.replace
和Series.astype
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
您可以使用DataFrame
的方法,使用convert\u numeric=True
将字符串更改为NaNs
从文档中:
转换数值:
如果为True,则尝试强制为数字(包括字符串),不可转换的值将变为NaN
最后,如果要将那些nan
转换为0
,可以使用df.replace
In [20]: df2.replace('NaN',0)
Out[20]:
a b c
0 1 2 4
1 0 2 4
2 1 0 5
使用
.to_numeric
将字符串转换为numeric(使用错误选项“强制”将字符串设置为NaN
:
然后使用替换将NaN
值转换为零:
df.replace('NaN',0)
注意,
pd.to_numeric
是新的热度<代码>转换对象已被弃用。啊,谢谢。我没有升级到0.17
,因此该选项不在我的pandas
中。我将更新我的答案…@DSM它似乎只对1D对象有效,所以转换数据帧
更复杂。。。还是我遗漏了什么?谢谢-但我的数据似乎有点污染。它适用于一个系列,但不适用于另一个系列。使其跳闸的序列包含“$-”
和“($24)”
值。在pd.to_numeric
之后,它仍然显示为对象类型谢谢-这几乎可以工作,但会在“($24)”
值上出错。如果您只想留下数字,可以使用df.str.replace(r'[^0-9]+','')
谢谢-但是如何将括号解析为负数,即“$(24)”
到-24
?您的意思是可以有单独的负数吗?你能发布一个数据示例吗?嗨@hellpanderrr我在这里发布了一个更一般的问题:哪个有解决方案?谢谢!我已经发布了关于处理会计格式数据的更一般的问题。看这里
df = pd.to_numeric(df, errors='coerce')
df.replace('NaN',0)