如何将列转换为数值数据?

时间:2018-11-30 02:58:13

标签: python pandas data-conversion

全部

当前,我的熊猫数据集看起来像下面,我想转换数据框,使其看起来像下面。我的要求如下

当前数据框:

 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

转换后: enter image description here

注意: 我确实知道我需要进行的转换是JSON格式,但基本上我想转换成女性和男性列,以便可以在数据集中创建“性别”列,分配值1和2,并在数据集中保留男性和女性数量。我是Python的新手,如果您能提供出色的代码说明!

1 个答案:

答案 0 :(得分:1)

您可以对meltmap的性别和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')