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

时间:2018-10-04 09:50:48

标签: python database pandas replace

我在数据集中有一列关于公司规模的分类,目前看起来像this,其中的'-'连字符当前代表缺失的数据:

我想用空值更改缺失值中的'-',以便我可以分析缺失数据。但是,当我将pd替换工具(请参见以下代码)与None值一起使用时,它似乎也会生成任何真正的条目,因为它们也包含连字符(例如51-200)。

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

我如何只替换单独的连字符,而保持其他条目不变?

3 个答案:

答案 0 :(得分:2)

您无需使用regex = True。

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

答案 1 :(得分:0)

您可以这样做

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)

输出:

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

另一个示例:

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

答案 2 :(得分:0)

您也可以这样做:

df['column_name'] = df['column_name'].replace('-','None')