Как заменить похожие значения в кадре данных панд? - PullRequest
0 голосов
/ 26 июня 2018

Я новичок в Пандах.У меня есть следующие типы данных в моем наборе данных.(Набор данных - индийское стартап-финансирование, загруженное из Kaggle.)

Date                datetime64[ns]
StartupName                 object
IndustryVertical            object
CityLocation                object
InvestorsName               object
InvestmentType              object
AmountInUSD                 object
dtype: object

data['AmountInUSD'].groupby(data['CityLocation']).describe()

Я выполнил вышеописанную операцию и обнаружил, что многие города похожи, например,

Bangalore   
Bangalore / Palo Alto
Bangalore / SFO
Bangalore / San Mateo
Bangalore / USA
Bangalore/ Bangkok

Я хочу сделать следующееоперация, но я не знаю код для этого.

В столбце CityLocation найдите все ячейки, начинающиеся с «Bang», и замените их на «Bangalore».Буду признателен за помощь.

Я сделал это

data[data.CityLocation.str.startswith('Bang')] 

, и я не знаю, что делать после этого.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Панда 0.23 имеет хороший способ обработки текста.См. Документы Работа с текстовыми данными .Вы можете использовать регулярные выражения для захвата и замены текста.

import pandas as pd
df = pd.DataFrame({'CityLocation': ["Bangalore / Palo Alto", "Bangalore / SFO", "Other"]})

df['CityLocation'] = df['CityLocation'].str.replace("^Bang.*", "Bangalore")

print(df)

Даст

  CityLocation
0    Bangalore
1    Bangalore
2        Other
0 голосов
/ 26 июня 2018

Вы можете использовать функцию loc, чтобы найти значения в вашем столбце, чья подстрока соответствует, и заменить их на значение по вашему выбору.

import pandas as pd

df = pd.DataFrame({'CityLocation': ['Bangalore', 'Dangerlore', 'Bangalore/USA'], 'Values': [1, 2, 3]})
print(df)
#     CityLocation  Values
# 0      Bangalore       1
# 1     Dangerlore       2
# 2  Bangalore/USA       3


df.loc[df.CityLocation.str.startswith('Bang'), 'CityLocation'] = 'Bangalore'
print(df)
#   CityLocation  Values
# 0    Bangalore       1
# 1   Dangerlore       2
# 2    Bangalore       3
...