Удалите первый экземпляр подстроки из строки, если она найдена в предыдущей строке в кадре данных - PullRequest
1 голос
/ 26 мая 2020

Я делаю анализ данных статистики покемонов, собранных в Интернете. Как я могу удалить первый экземпляр "Venusaur" в строке №3, чтобы он просто сказал "Mega Venusaur"? Я думаю о функции, которая сравнивает предыдущее «имя» в строке, но как получить доступ к первому экземпляру имени? И примените это ко всем «мегамазам» в остальной части списка.

name_instance = for Name in Names
poke_df.loc[poke_df['Name'].str.contains(name_instance), 'Name'] = 'Mega'+name_instance
NationalNo  Name    Type    Type_1  Type_2  HP  Attack  Defense Sp_Atk  Sp_Def  Speed   Total   Stat_Avg

2   003 Venusaur    [Grass, Poison] Grass   Poison  80  82  83  100 100 80  525 87
3   003 Venusaur Mega Venusaur  [Grass, Poison] Grass   Poison  80  100 123 122 120 80  625 104
4   004 Charmander  [Fire, None]    Fire    None    39  52  43  60  50  65  309 51

1 Ответ

0 голосов
/ 26 мая 2020

Измените условие на вашу ссылку:

df = pd.DataFrame({
    'Name': ['Venusaur', 'Venusaur Mega Venusaur', 'Charmander']})
df['Prev Name'] = df['Name'].shift(fill_value='')


def get_name(row):
    name = row['Name']
    prev_name = row['Prev Name']
    if name.startswith(prev_name):
        return name[len(prev_name):]
    return name


df['Name'] = df.apply(get_name, axis=1)
df.drop(columns='Prev Name', inplace=True)
print(df)

Результат:

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