在Pandas中用0替换空格(Python 3)

3 投票
4 回答
16397 浏览
提问于 2025-04-19 00:23

这里有个简单的问题——我怎么把一列中的所有空格替换成零呢?

比如说:

  Name       Age
  John       12
  Mary 
  Tim        15

变成

  Name       Age
  John       12
  Mary       0
  Tim        15

我试过用类似这样的代码,但我不太确定Pandas是怎么处理空格的:

 merged['Age'].replace(" ", 0).bfill()

有什么想法吗?

4 个回答

0

如果你想使用NumPy,可以参考下面的代码:

import numpy as np    
df['column_of_interest'] = np.where(df['column_of_interest']==' ',0,df['column_of_interest']).astype(float)

虽然Paulo的回答很棒,但我上面的代码在需要同时满足多个条件进行复杂数据处理时可能会很有用。

1

这是一个从这个更详细的问题修改过来的回答。我会让它更符合Python的风格,并解决你提到的basestring问题。

def ws_to_zero(maybe_ws):
    try:
        if maybe_ws.isspace():
            return 0
        else:
            return maybe_ws
    except AttributeError:
        return maybe_ws

d.applymap(ws_to_zero)

这里的d就是你的数据框(dataframe)。

4

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是从一个箱子里拿东西,然后把它放到另一个箱子里。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地提取出来。这就像是你想要从一个箱子里拿出一个特定的玩具,但里面的东西太乱了,你找不到它。

为了避免这些问题,我们可以使用一些工具或者方法来帮助我们更好地管理和处理数据。就像是使用标签来标记箱子里的东西,这样我们就能更快地找到我们需要的东西。

总之,处理数据的过程可能会遇到各种各样的挑战,但只要我们有合适的方法和工具,就能顺利地完成任务。

merged['Age'] = merged['Age'].apply(lambda x: 0 if x == ' ' else x)
3

使用内置的方法 convert_objects,并把参数 convert_numeric=True 设置为真:

In [12]:
# convert objects will handle multiple whitespace, this will convert them to NaN
# we then call fillna to convert those to 0
df.Age = df[['Age']].convert_objects(convert_numeric=True).fillna(0)
df
Out[12]:
   Name  Age
0  John   12
1  Mary    0
2   Tim   15

撰写回答