#python #pandas
Вопрос:
У меня есть фрейм данных, который представляет собой гораздо более длинную версию этого:
Из этого я пытался превратить это в это:
Я пытался создать словарь, используя его, но затем возникли проблемы с его повторным включением для создания нужного кадра данных.
Честно говоря, я уверен, что это довольно просто, и мне просто этого не хватает, любая помощь была бы по-настоящему признательна. Я попытался опубликовать данные в виде текста, но у меня возникли проблемы с этим, на самом деле это совершенно не имеет значения, я просто не понимаю, как преобразовать данные требуемым образом.
Еще раз спасибо вам!
{1: {'Country': 'England', 'Subject Descriptor': 'Real GDP', '2011': '8,248.62', '2012': '8,835.39', '2013': '9,478.98', '2014': '10,224.38', '2015': '11,057.94', '2016': '11,477.97', nan: nan}, 2: {'Country': 'England', 'Subject Descriptor': 'Nom GDP', '2011': '15,158.02', '2012': '17,328.64', '2013': '19,758.15', '2014': '22,504.79', '2015': '25,424.83', '2016': '27,749.64', nan: nan}, 3: {'Country': 'England', 'Subject Descriptor': 'GDP defl', '2011': '183.764', '2012': '196.128', '2013': '208.442', '2014': '220.109', '2015': '229.924', '2016': '241.764', nan: nan}, 4: {'Country': 'Italy', 'Subject Descriptor': 'Real GDP', '2011': '56.524', '2012': '60.712', '2013': '64.55', '2014': '67.025', '2015': '69.893', '2016': '69.322', nan: nan}, 5: {'Country': 'Italy', 'Subject Descriptor': 'Nom GDP', '2011': '122.5', '2012': '136.911', '2013': '152.39', '2014': '163.456', '2015': '172.759', '2016': '178.37', nan: nan}, 6: {'Country': 'Italy', 'Subject Descriptor': 'GDP defl', '2011': '216.722', '2012': '225.509', '2013': '236.082', '2014': '243.873', '2015': '247.176', '2016': '257.306', nan: nan}}
Ответ №1:
В этой ситуации, я думаю, транспонирование помогло бы вам больше всего. Вот простое использование этой функции:
import pandas as pd
import numpy as np
data = {"Country": ["Subject", "2010", "2011", "2012", "2013", "2014"], "England": [
"Norm GDP", "8,248.62", "8,835.39", "8,248.62", "8,835.39", "8,248.62"]}
df = pd.DataFrame(data)
print(df)
df_t = df.transpose()
print(df_t)
Ввод:
Country England
0 Subject Norm GDP
1 2010 8,248.62
2 2011 8,835.39
3 2012 8,248.62
4 2013 8,835.39
5 2014 8,248.62
Выход:
0 1 2 3 4 5
Country Subject 2010 2011 2012 2013 2014
England Norm GDP 8,248.62 8,835.39 8,248.62 8,835.39 8,248.62
Вы можете просто игнорировать фиктивные данные, которые я использовал. Наиболее важной является функция транспонирования. Это математический метод, который может быть применен к матрицам.
PS: В следующий раз, когда будете публиковать вопросы, постарайтесь предоставлять наборы данных в виде текста (вместо изображений), тогда другим будет намного проще протестировать свой код, и вы сможете быстрее получить помощь.
Комментарии:
1. Большое вам спасибо за ваш ответ, я уже использовал это раньше, но это не дает желаемого результата. Чего я хочу, так это чтобы годы шли, а потом повторялись. Например. 2010, 2011, 2012, 2013, 2014, 2010, 2011, 2012, 2013, 2014. Я благодарен вам за то, что вы нашли время, чтобы помочь.
2. @Джеймс ах, хорошо. Если бы вы могли предоставить весь набор данных в виде текста, было бы намного проще предоставить правильное решение.
3. Еще раз здравствуйте, я добавил набор данных в текст, полученный из python, надеюсь, вы сможете мне помочь. Спасибо!