将一列分组,然后将剩余的列转换为字典

时间:2018-12-20 14:11:36

标签: python pandas dataframe pandas-groupby

我有一个这样的数据框

import pandas as pd

df = pd.DataFrame({'keyid': ['d1', 'd1', 'd2', 'd2'],
                   'keys': ['key1', 'key2', 'key1', 'key2'],
                   'vals': ['val1', 'val2', 'val3', 'val4']})

  keyid  keys  vals
0    d1  key1  val1
1    d1  key2  val2
2    d2  key1  val3
3    d2  key2  val4

我想转换成

{'d1': {'key1': 'val1', 'key2': 'val2'},
 'd2': {'key1': 'val3', 'key2': 'val4'}}

最接近的是:

print(df.groupby('keyid')['keys', 'vals'].apply(lambda g: g.to_dict(orient='records')).to_dict())

可打印

'd1': [{'keys': 'key1', 'vals': 'val1'}, {'keys': 'key2', 'vals': 'val2'}],
'd2': [{'keys': 'key1', 'vals': 'val3'}, {'keys': 'key2', 'vals': 'val4'}]}

我现在可以进一步修改此词典,但是有没有更简单的方法?

1 个答案:

答案 0 :(得分:3)

您很亲密,只需要$.ajax({ url: GlobalVariables.baseUrl + '/dashboard_api/ajax_save_user', dataType: 'text', cache: false, contentType: false, processData: false, data: form_data, type: 'post', success: function (response) { alert(true); }.bind(this), error: function (response) { alert(false); }.bind(this) }, 'json').fail(GeneralFunctions.ajaxFailureHandler); 中带有applydict的字典:

values