Замена строки в питоне датафрейма - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть (7,11000) фрейм данных.в некоторых из этих 7 столбцов есть строки.В Кулмне 2 и строке 1000 есть строка «Лондон».Я хочу изменить его на «Париж».как я могу это сделать?Я искал по всей сети, но я не мог найти способ.Я использовал эти команды, но ни одна из них не работает:

df['column2'].replace('London','Paris')
df['column2'].str.replace('London','Paris')
re.sub('London','Paris',df['column2'])

Я обычно получаю эту ошибку:

TypeError: expected string or bytes-like object

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Перед тем, как заменить проверку на отсутствие символов на re

import re
for r, map in re_map.items():
    df['column2'] = [re.sub(r, map, x) for x in df['column2']]

0 голосов
/ 07 февраля 2019

Все это отличные ответы, но многие из них не векторизованы: они работают над каждым элементом в серии один раз, а не над всей серией.

Очень надежная стратегия фильтрации + замены - создать маску или подмножество рядов True / False, а затем использовать loc с этим рядом для замены:

mask = df.country == 'London' 
df.loc[mask, 'country'] = 'Paris'

# On 10m records:
  # this method < 1 second 
  # @Charles method 1 < 10 seconds
  # @Charles method 2 < 3.5 seconds
  # @jose method didn't bother because it would be 30 seconds or more
0 голосов
/ 07 февраля 2019

Если вы хотите заменить одну строку (вы упоминаете строку 1000), вы можете сделать это с помощью .loc.Если вы хотите заменить все вхождения 'London', вы можете сделать это:

import pandas as pd
df = pd.DataFrame({'country': ['New York', 'London'],})
df.country = df.country.str.replace('London', 'Paris')

В качестве альтернативы, вы можете написать свою собственную функцию замены, а затем использовать .apply:

def replace_country(string):
    if string == 'London':
        return 'Paris'
    return string

df.country = df.country.apply(replace_country)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...