Все,
В настоящее время мой набор данных pandas выглядит следующим образом, и я хотел бы преобразовать свой фрейм данных так, чтобы он выглядел следующим образом. Мои требования ниже
Текущий фрейм данных:
df.tail()
age country females males total year
96 United States 72700 22700 95400 2010
97 United States 50300 14500 64800 2010
98 United States 35000 8730 43700 2010
99 United States 25200 4920 30100 2010
100 United State 51200 9570 60800 2010
Примечание:Я понимаю, что мое необходимое преобразование находится в формате JSON, но в основном я хотел бы преобразовать свои столбцы женщин и мужчин, чтобы я мог создать столбец Пол в моем наборе данных и назначить значения 1 и 2, а также сохранить количество мужчин и женщин в наборе данных. Я новичок в Python, если бы вы могли дать объяснение с помощью кода, который будет отличным!
@ W-B .. см. Обновленный вопрос






Вы можете немного изменить форматы melt, map для полов и to_dict, чтобы получить список словарей.
v = (df.melt(['age', 'country', 'total', 'year'])
.rename({'variable': 'sex', 'total': 'people'}, axis=1))
v['sex'] = v['sex'].map({'males':1, 'females':2})
data = v.drop('value',1).to_dict('r')
print(data)
[{'age': 96,
'country': 'United States',
'people': 95400,
'sex': 2,
'year': 2010},
{'age': 97,
'country': 'United States',
'people': 64800,
'sex': 2,
'year': 2010},
...
]
Вместо этого вам может понадобиться JSON, поэтому используйте
json_data = v.drop('value',1).to_json(orient='records')
Спасибо! но я хотел бы сохранить свои данные в фреймворке pandas
@ biggboss2019 Подождите минутку, прочтите код, поймите, что он делает, а затем удалите часть .to_dict('r') в конце.
Прости! Я был в спешке. Но я понял, что v находится в фрейме данных Pandas
Можете ли вы показать нам данные, используя df.head (), а не картинку?