如何将pandas列中的特定字符替换为null?

2024-04-25 06:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个数据集中有一个列,关于分类的公司大小,它当前看起来像this,其中的“-”连字符当前表示丢失的数据:

我想把缺失值中的“-”改为空值,这样我就可以分析丢失的数据了。但是,当我使用带有None值的pd replace工具(参见下面的代码)时,它似乎也生成了任何真正的条目,因为它们也包含连字符(例如51-200)。在

df['Company Size'].replace({'-': None},inplace =True, regex= True)

如何才能只替换孤立的连字符而不影响其他条目?在


Tags: 工具数据代码nonetruedf分类公司
2条回答

不需要使用regex=True。在

df['Company Size'].replace({'-': None},inplace =True)

你可以这样做

import numpy as np
import pandas as pd


df = pd.DataFrame({'A': [0, 1, 2, 3, 4],
                   'B': [5, 6, 7, 8, 9],
                   'C': ['a', '-', 'c ', 'd', 'e']})

df['C'] = df['C'].replace('-', np.nan)
df = df.where((pd.notnull(df)), None) 
# can also use this -> df['C'] = df['C'].where((pd.notnull(df)), None)

print(df)

输出:

^{pr2}$

另一个例子:

df = pd.DataFrame({'A': [0, 1, 2, 3, 4],
                   'B': ['5-5', '-', 7, 8, 9],
                   'C': ['a', 'b', 'c ', 'd', 'e']})

df['B'] = df['B'].replace('-', np.nan)
df = df.where((pd.notnull(df)), None)
print(df)

输出:

   A     B    C
0  0   5-5    a
1  1  None    b
2  2     7  c 
3  3     8    d
4  4     9    e

相关问题 更多 >