Как заменить определенный символ в столбце панд нулевым? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть столбец в наборе данных относительно категориальных размеров компании, который в настоящее время выглядит как this , где дефисы '-' в настоящее время представляют отсутствующие данные:

Я хочу изменить'-' в пропущенных значениях с нулями, чтобы я мог анализировать пропущенные данные.Однако, когда я использую инструмент pd replace (см. Следующий код) со значением None, он, похоже, также создает любые подлинные записи, поскольку они также содержат дефисы (например, 51-200).

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

Как можноЯ заменяю только одиноко стоящие дефисы и оставляю остальные записи без изменений?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вам не нужно использовать regex = True.

df['Company Size'].replace({'-': None},inplace =True)
0 голосов
/ 04 октября 2018

вы можете сделать это следующим образом

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...