Как написать код для набора данных, в котором один из столбцов содержит знаки препинания, пробелы и удалить соответствующую ему строку? - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь очистить набор данных, который содержит некоторые китайские символы, и избавиться от тех строк, которые содержат китайские символы.

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

        df["reviewer_name"] = df["reviewer_name"].str.replace(r'[^\x00-\x7F]+','')
        df['comments'] = df['comments'].str.replace(r'[^\x00-\x7F]+', '')
        df = df[df['comments'].str.contains(r'\W+', na=False)]
        df

Данные таковы -

  • данные -
    title_id дата Имя рецензента комментарии

    258716 2019-04-21 Куча Чуан 新 公寓, 很 干净, 还有 管理员 接待

-Expected- Все строки с китайскими иероглифами будут удалены из набора данных

1 Ответ

1 голос
/ 25 июня 2019

Поиск строк, содержащих регулярное выражение: row_to_drop - это обозначения строк, содержащих китайский.

rows_to_drop1= df.loc[df["reviewer_name"].str.contains(r'[^\x00-\x7F]', na=False)].index
clean_df = df.drop(rows_to_drop1,axis=0)
rows_to_drop2= df.loc[df["comments"].str.contains(r'[^\x00-\x7F]', na=False)].index

Теперь вы хотите обновить clean_df, опустив row_to_drop2, поэтому установите на место = True:

clean_df.drop(rows_to_drop2,axis=0,inplace=True)

Вы также можете сделать все сразу:

condition1 = df["reviewer_name"].str.contains(r'[^\x00-\x7F]', na=False)
condition2 = df["comments"].str.contains(r'[^\x00-\x7F]', na=False)
row_to_drop = df.loc[condition1 & condition2 ].index
clean_df = df.drop(rows_to_drop,axis=0)
...