Изменение значений элементов в Pandas Datastructure - PullRequest
0 голосов
/ 28 мая 2020

Я импортировал файл .xls с

ene2 = pd.read_excel('Energy Indicators.xls', index=False)

голова выглядит так

print(ene2.head())          
          Country Energy Supply Energy Supply per Capita % Renewable's
15             NaN    Petajoules               Gigajoules             %
16     Afghanistan           321                       10       78.6693
17         Albania           102                       35           100
18         Algeria          1959                       51       0.55101
19  American Samoa           ...                      ...      0.641026

Допустим, я использовал FOR l oop для обмена некоторыми значениями

for value in ene2['Energy Supply']:
    if value == 'Petajoules':
        value = 'Gigajoules'
        print(value)

внутри l oop все выглядит хорошо

однако снова печатающая головка

print(ene2.head())  

покажите мне, что никаких изменений не было внесено в DataStructure iteslf

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

ВОПРОС

Что мне еще делать, чтобы изменения вступили в силу и реализовано внутри Datastructure?

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вместо:

value = 'Gigajoules'

сделайте следующее:

ene2.loc[ene2['Energy Supply'] == value, 'Energy Supply'] = 'Gigajoules'

Вы должны установить его в соответствующую ячейку, отфильтровав правильные строки и столбцы с помощью .loc. Другой ответ - более простой метод, но я хотел, чтобы вы поняли, что вы не вносите изменения обратно в фрейм данных просто с помощью value = blah.

1 голос
/ 28 мая 2020

Вы можете просто использовать Series.replace:

ene2['Energy Supply'] = ene2['Energy Supply'].replace('Petajoules', 'Gigajoules')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...