Заменить только первый символ из столбца в кадре данных - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь заменить некоторые слова, встречающиеся в самом начале оператора в каждой строке кадра данных.Однако переход в позицию «1» заменяет все.Почему передача "1" вместо не работает?Есть ли другой способ для этого?Спасибо!

Начальный:

df_test = pd.read_excel('sample.xlsx')
print('Initial: \n',df_test)

Initial: 
                                         some_text
0   ur goal is to finish shopping for books today
1  Our goal is to finish shopping for books today
2                          The help is on the way
3        he way is clear … he is going to library

Попытка:

df_test['some_text'] = df_test['some_text'] \
        .str.replace('ur ','Our ',1) \
        .str.replace('he ','The ',1) 
print('Tried:\n',df_test)

Tried: (Incorrect Results) 
                                          some_text
0   Our goal is to finish shopping for books today
1  OOur goal is to finish shopping for books today
2                          TThe help is on the way
3        The way is clear … he is going to library

Необходим конечный результат:

                                    some_text
0   Our goal is to finish shopping for books today
1  Our goal is to finish shopping for books today
2                          The help is on the way
3        The way is clear … he is going to library

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Не уверен, почему другой ответ был удален, он был гораздо более кратким и сделал свою работу.(Извините, я не помню, кто его опубликовал. Я попробовал ответ, и он работал, но имел определенные ограничения)

df.some_text.str.replace('^ur','Our ').str.replace('^he','The ')

Однако, как указано в комментариях, этозаменить все начальные символы, начинающиеся с 'ur' ('ursula') или 'he' ('helen').

Исправленный код:

df.some_text.str.replace('^ur\s','Our ').str.replace('^he\s','The ')

«^» указывает на начало строки и должен заменять только неполные слова в начале строки.'\s' обозначает пробел после первого слова, поэтому оно соответствует только правильному слову.

0 голосов
/ 03 декабря 2018

Языки программирования, включая Python, не читают как люди.Вы должны указать Python разделить пробелами.Например, через str.split:

df = pd.DataFrame({'some_text': ['ur goal is to finish shopping for books today',
                                 'Our goal is to finish shopping for books today',
                                 'The help is on the way',
                                 'he way is clear … he is going to library']})

d = {'ur': 'Our', 'he': 'The'}

df['result'] = [' '.join((d.get(i, i), j)) for i, j in df['some_text'].str.split(n=1)]

print(df)

                                        some_text  \
0   ur goal is to finish shopping for books today   
1  Our goal is to finish shopping for books today   
2                          The help is on the way   
3        he way is clear … he is going to library   

                                           result  
0  Our goal is to finish shopping for books today  
1  Our goal is to finish shopping for books today  
2                          The help is on the way  
3       The way is clear … he is going to library  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...