首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用NaN替换中的破折号?

如何用NaN替换中的破折号?
EN

Stack Overflow用户
提问于 2017-06-10 07:21:32
回答 3查看 9.2K关注 0票数 5

我有一个dataframe (在Python中),如下所示:

代码语言:javascript
复制
      A     B    C    D     E      F     G    H

0    T-1    2    3    -    M-7     2          2

1    T-2    5    4    2    M-7     4          3

2    T-3    -    -    3    M-7            9   4  

3    T-4    6    -    4    M-7     -      9   5

4    T-5    -    1    5    M-7     8          6

我想将破折号(,不包括A和E列中的)替换为NaN

我尝试了df.replace('-', np.nan).It,最后也替换了A和E列的整个单元格。我想我可以使用df[column_name].replace('-',np.nan),但是我必须对每一列分别应用它。

有没有其他的方法,这是有效的,并将工作在任何数量的列有类似的限制?

EN

回答 3

Stack Overflow用户

发布于 2017-06-10 07:32:58

这应该能行。

代码语言:javascript
复制
df = pd.DataFrame({'A': list('abcde'),
                  'B': ['T-1', 'T-2', 'T-3', 'T-4', 'T-5'],
                  'C': ['a', '-', 'c', 'd', '-'],
                  'D': ['-', 'b', 'c', 'd', 'e'],
                  'E': ['M-7', 'M-7', 'M-7', 'M-7', 'M-7'],
                  'F': ['a', '-', 'c', '-', '-'],
                  'G': ['a', 'b', 'c', 'd', '-'],
                  'H': ['a', 'b', '-', 'd', '-']
                  })

df = df.astype(str)

s = df.applymap(lambda x: re.sub(r'^-$', str(np.NaN), x))

输出:

代码语言:javascript
复制
   A    B    C    D    E    F    G    H
0  a  T-1    a  nan  M-7    a    a    a
1  b  T-2  nan    b  M-7  nan    b    b
2  c  T-3    c    c  M-7    c    c  nan
3  d  T-4    d    d  M-7  nan    d    d
4  e  T-5  nan    e  M-7  nan  nan  nan
票数 1
EN

Stack Overflow用户

发布于 2017-06-10 07:45:43

代码语言:javascript
复制
In [18]: df[df.columns.drop(['A','E'])] = \
             df[df.columns.drop(['A','E'])].replace('-', np.nan)

In [19]: df
Out[19]:
   A    B    C    D    E    F    G    H
0  a  T-1    a  NaN  M-7    a    a    a
1  b  T-2  NaN    b  M-7  NaN    b    b
2  c  T-3    c    c  M-7    c    c  NaN
3  d  T-4    d    d  M-7  NaN    d    d
4  e  T-5  NaN    e  M-7  NaN  NaN  NaN
票数 1
EN

Stack Overflow用户

发布于 2022-10-16 17:47:05

只需使用df=df.replace('-',np.nan)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44470695

复制
相关文章

相似问题

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