Корректное приведение данных в соответствие с сводной таблицей, оставляя индекс двухуровневым - PullRequest
0 голосов
/ 08 февраля 2019

Я изо всех сил пытаюсь решить эту проблему.Я знал, как создать сводную таблицу, но я действительно изо всех сил стараюсь сохранить индекс как двухуровневый.Вот вопрос, и мой код ниже:

Используйте pivot_table, чтобы привести в порядок данные ниже в table1, присваивая результат переменной table1_tidy.В этом случае оставьте индекс как двухуровневый country и year.

table1columns = ["country",  "year",       "type",     "count"]
table1data =[ ["Afghanistan",  1999,      "cases",       745],
          ["Afghanistan",  1999, "population",  19987071],
          ["Afghanistan",  2000,      "cases",      2666],
          ["Afghanistan",  2000, "population",  20595360],
          [     "Brazil",  1999,      "cases",     37737],
          [     "Brazil",  1999, "population", 172006362],
          [     "Brazil",  2000,      "cases",     80488],
          [     "Brazil",  2000, "population", 174504898],
          [      "China",  1999,      "cases",    212258],
          [      "China",  1999, "population",1272915272],
          [      "China",  2000,      "cases",    213766],
          [      "China",  2000, "population",1280428583] ]

table1 = pd.DataFrame(table1data, columns=table1columns)

### BEGIN SOLUTION
'''
This code uses `pivot_table` to tidy the data below in `table1`, 
assigning the result to the variable `table1_tidy`.
'''
table1_tidy = table1.pivot('type', 'count')
### END SOLUTION
# When done, comment out line below
# raise NotImplementedError()
print(table1_tidy)

Мой код должен передать следующие операторы assert, но в настоящее время он этого не делает:

assert table1_tidy.shape == (6, 2)
assert table1_tidy.iloc[3, 0] == 80488

1 Ответ

0 голосов
/ 08 февраля 2019

Pivot дает значение ошибки для многоиндексной индексации.Существует открытая ошибка на GitHub для того же.Текущее решение состоит в том, чтобы использовать вместо этого pivot_table

table1_tidy = table1.pivot_table( index = ['country', 'year'], columns = 'type',values = 'count')



type                cases   population
country     year        
Afghanistan 1999    745     19987071
            2000    2666    20595360
Brazil      1999    37737   172006362
            2000    80488   174504898
China       1999    212258  1272915272
            2000    213766  1280428583

Вы можете получить тот же результат, используя set_index

table1_tidy = table1.set_index(['country', 'year', 'type'])['count'].unstack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...