Wszystko,

Obecnie mój zestaw danych pandy wygląda następująco i chciałbym przekonwertować moją ramkę danych tak, aby wyglądała jak następująca. Moje wymagania są poniżej

Bieżąca ramka danych:

 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

Po konwersji: tu wpisz opis obrazu

Uwaga: Rozumiem, że moja wymagana konwersja jest w formacie JSON, ale zasadniczo chciałbym przekonwertować moje kolumny kobiet i mężczyzn, aby móc utworzyć kolumnę Płeć w moim zbiorze danych i przypisać wartości 1. i 2, a także utrzymywanie liczby samców i samic w zbiorze danych. Jestem nowicjuszem w Pythonie, jeśli możesz podać wyjaśnienie z kodem, który będzie świetny!

0
biggboss2019 30 listopad 2018, 05:58

1 odpowiedź

Najlepsza odpowiedź

Możesz trochę zmienić kształt melt, map dla płci i to_dict, aby uzyskać listę słowników.

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},
  ...
]

Możesz zamiast tego chcieć JSON, więc użyj

json_data = v.drop('value',1).to_json(orient='records')
1
cs95 30 listopad 2018, 06:13