Как заменить значения символами, добавляемыми в конце на NaN в кадре данных Pandas? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь очистить свой набор данных pandas, но я не могу найти способ удалить странные значения с добавлением #, *, x в конце значения. Я хотел бы заменить все эти значения на np.nan.

Я прикрепил ссылку ниже, как выглядит мой набор данных.

https://imgur.com/gallery/5l5XhF1

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Вы можете использовать панд to_numeric - убедитесь, что вы добавили errors=coerce.

0 голосов
/ 15 января 2019

Используйте set_index для получения только числовых столбцов, затем apply, поскольку to_numeric работает с каждым столбцом (Series) отдельно длязаменить нечисловое значение на NaN s параметром errors='coerce':

non_num_cols = ['date']
df = df.set_index(non_num_cols).apply(pd.to_numeric, errors='coerce').reset_index()
0 голосов
/ 15 января 2019

Вариант 1: вы хотите заменить мусор очищенными значениями

replace_dict = {
        '#': '',
        '*': ''
    }

for key in replace_dict.keys():
    df = df.applymap(lambda x: x.replace(key, replace_dict[key]) if type(x) is str else x)

Вариант 2: вы хотите заменить мусор на np.nan

import pandas
import re

replace_char = ['#', '*']
for char in replace_char:
    df = df.applymap(lambda x: np.nan if re.search('.*' + char, str(x)) else x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...