Использование loc для замены значений дает ошибку - PullRequest
0 голосов
/ 03 мая 2018

Мой код выглядит так:

import pandas as pd
df = pd.read_excel("Energy Indicators.xls", header=None, footer=None)
c_df = df.copy()
c_df = c_df.iloc[18:245, 2:]
c_df = c_df.rename(columns={2: 'Country', 3: 'Energy Supply', 4:'Energy Supply per Capita', 5:'% Renewable'})
c_df['Energy Supply'] = c_df['Energy Supply'].apply(lambda x: x*1000000)
print(c_df)
c_df = c_df.loc[c_df['Country'] == ('Korea, Rep.')] = 'South Korea'

Когда я запускаю его, я получаю ошибку "str" ​​не имеет атрибута "loc". Похоже, это говорит мне, что я не могу использовать loc на фрейме данных. Все, что я хочу сделать, это заменить значение, поэтому, если есть более простой способ, я весь слух.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Просто сделай

c_df.loc[c_df['Country'] == ('Korea, Rep.')] = 'South Korea'

вместо

c_df = c_df.loc[c_df['Country'] == ('Korea, Rep.')] = 'South Korea'

0 голосов
/ 03 мая 2018

Я бы предложил использовать df.replace:

df = df.replace({'c_df':{'Korea, Rep.':'South Korea'}})

Приведенный выше код заменяет Korea, Rep. на South Korea только в столбце c_df. Взгляните на документацию df.replace , которая объясняет синтаксис вложенного словаря, который я использовал выше:

Вложенные словари, например, {‘a’: {‘b’: nan}}, читаются следующим образом: посмотрите в столбце «a» значение «b» и замените его на nan. Вы также можете вкладывать регулярные выражения. Обратите внимание, что имена столбцов (ключи словаря верхнего уровня во вложенном словаре) не могут быть регулярными выражениями.

Пример

# Original dataframe:
>>> df
          c_df whatever
0  Korea, Rep.     abcd
1            x     abcd
2  Korea, Rep.     abcd
3            y     abcd

# After df.replace:
>>> df
          c_df whatever
0  South Korea     abcd
1            x     abcd
2  South Korea     abcd
3            y     abcd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...