Как напечатать данные для определенного значения (строки) из фрейма данных (панды) - PullRequest
0 голосов
/ 10 октября 2018

У меня есть данные, которые содержат показатели рождаемости для разных стран, и я хотел бы: 1. переименовать столбцы 2. распечатать только конкретные страны (не используя индексы, а названия)

Здесь я импортирую данные с веб-сайта

df = pd.read_html('https://www.cia.gov/library/publications/the-world-factbook/fields/2127.html')

Затем я пытаюсь переименовать столбцы (от '0' до 'Country' и от '1' до 'TFR'):

df= df.rename(index=str, columns ={'0':'Country', '1':'TFR'})

Но я получаю сообщение об ошибке:

df = df.rename(index=str, columns ={'0':'Country', '1':'TFR'})
AttributeError: 'list' object has no attribute 'rename'

Вот как я пытаюсь найти конкретную страну:

print(df[df['0'].str.contains("Tanzan")])

И я получаю следующую ошибку:

TypeError: list indices must be integers or slices, not str

Что яделать неправильно?Как разобраться (если это возможно)?Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 10 октября 2018

Сначала добавьте параметр header=0 для преобразования первой строки страницы в заголовок DataFrame, а затем добавьте [0] для выбора первого DataFrame из списка DataFrames:

url = 'https://www.cia.gov/library/publications/the-world-factbook/fields/2127.html'
d = {'TOTAL FERTILITY RATE(CHILDREN BORN/WOMAN)':'TFR'}
df = pd.read_html(url, header=0)[0].rename(columns=d)
print (df.head())
          Country                                   TFR
0     Afghanistan  5.12 children born/woman (2017 est.)
1         Albania  1.51 children born/woman (2017 est.)
2         Algeria   2.7 children born/woman (2017 est.)
3  American Samoa  2.68 children born/woman (2017 est.)
4         Andorra   1.4 children born/woman (2017 est.)

Последний фильтр по имени нового столбца:

print(df[df['Country'].str.contains("Tanzan")])
      Country                                   TFR
204  Tanzania  4.77 children born/woman (2017 est.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...