Я пытаюсь получить вывод замененного строкового значения в кадре данных, но он не меняется - PullRequest
0 голосов
/ 16 июня 2020

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

import pandas as pd
import numpy as np
def answer_one():
    energy = pd.read_excel('Energy Indicators.xls', skip_footer=38,skiprows=17).drop(['Unnamed: 0',
                                                                           'Unnamed: 1'], axis='columns')
    energy = energy.rename(columns={'Unnamed: 2':'Country',
                       'Petajoules':'Energy Supply',
                       'Gigajoules':'Energy Supply per Capita',
                       '%':'% Renewable'})
    energy['Energy Supply'] *=1000000
    energy['Country'] = energy['Country'].replace({'China, Hong Kong Special Administrative Region': 
                                                   'Hong Kong', 'United Kingdom of Great Britain and 
                                                    Northern Ireland': 'United Kingdom', 'Republic Of 
                                                    Korea': 'South Korea', 'United States of America': 
                                                   'United States', 'Iran (Islamic Republic of)': 
                                                   'Iran'}) 

    return energy
answer_one()

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

1 Ответ

0 голосов
/ 17 июня 2020

Я не вижу проблем с .replace(). Возможно, что-то еще отсутствует, чего мы не знаем из скрытого набора данных. Я просто создал образец df со значениями, которые у вас есть, и заменил их, как вы это сделали. Теперь df имеет исходные значения для столбца страны.

df = pd.DataFrame(['China, Hong Kong Special Administrative Region',
                   'United Kingdom of Great Britain and Northern Ireland',
                   'Republic Of Korea',
                   'United States of America',
                   'Iran (Islamic Republic of)'],
                  columns=['Country'])
print(df)

Перед заменой:

                                             Country
0     China, Hong Kong Special Administrative Region
1  United Kingdom of Great Britain and Northern I...
2                                  Republic Of Korea
3                           United States of America
4                         Iran (Islamic Republic of)

Использовал тот же .replace() и назначил пары (см. Правильный отступ)

df['Country'] = df['Country'].replace({'China, Hong Kong Special Administrative Region': 'Hong Kong',
                                       'United Kingdom of Great Britain and Northern Ireland': 'United Kingdom',
                                       'Republic Of Korea': 'South Korea',
                                       'United States of America': 'United States',
                                       'Iran (Islamic Republic of)': 'Iran'})
print(df)

После замены:

          Country
0       Hong Kong
1  United Kingdom
2     South Korea
3   United States
4            Iran
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...