У меня есть фрейм данных с 2 индексами, один для стран (20 стран) и один для лет (период 10 лет). Для каждого кортежа у меня есть 2 столбца с данными. Я сделал for
l oop, чтобы увеличить значения в первом столбце по годам для каждой страны (и иметь кумулятивное значение за последние годы, а не значение года).
for country in data.index.get_level_values(level=0).unique():
for year in range(2005,2015):
data['Col1'].loc[country,year+1]=data['col1'].loc[country,year]+data['col1'].loc[country,year+1]
Это работает хорошо (хотя должен быть более элегантный способ сделать это) Затем я пытался упорядочить свои страны по убыванию значений col1. поэтому я добавил эту строку:
data.loc[country]=data.loc[country].sort_values(by=['col1'])
В моей «стране» l oop. Но то, что я получаю, - это мой массив данных, заполненный значениями NaN. Затем я попробовал разные sort_values, sort_index, но ничего не получалось. Я также попытался сгруппировать по значению интереса в col1 (последний, самый большой), и попытаться сгруппировать, а затем отсортировать индекс.
data.groupby(data['col1'].loc[country,2014]).sort_index(level=0,ascending=False)
Но он возвращает мне хороший KeyError: 5270
Вот пример того, что у меня есть:
``````````````````````````````
col1 | col2
Country | Year | |
Brasil | 2006 | 3 |
| 2007 | 12 |
| 2014 | 150|
``````````````````````````````````
Germany | 2006 | 33 |
| 2007 | 64 |
| 2014 | 750|
И я хотел бы иметь это:
``````````````````````````````
col1 | col2
Country | Year | |
Germany | 2006 | 33 |
| 2007 | 64 |
| 2014 | 750|
``````````````````````````````````
Brazil | 2006 | 3 |
| 2007 | 12 |
| 2014 | 150|
Исходя из того факта, что Col1 (2014) выше для Германия, а не Бразилия
РЕДАКТИРОВАТЬ Мне удалось отсортировать мой индекс по Col1 (2014):
data['Col1'].loc[:,2014].sort_values(ascending=False)
, что дает мне серию. Сейчас я ищу лучший способ использовать это расположение индексов для всего моего фрейма данных.