字典唯一键重命名和替换

Dictionary Unique Keys Rename and Replace

我有这样的字典格式结构

df = pd.DataFrame({'ID' : ['A', 'B', 'C'],
'CODES' : [{"1407273790":5,"1801032636":20,"1174813554":1,"1215470448":2,"1053754655":4,"1891751228":1},
{"1497066526":19,"1801032636":16,"1215470448":11,"1891751228":18},
{"1215470448":8,"1407273790":4},]})

现在我想创建一个唯一的键列表并像这样为它们创建名称 -

np_code     np_rename
1407273790  np_1
1801032636  np_2
1174813554  np_3
1215470448  np_4
1053754655  np_5
1891751228  np_6
1497066526  np_7

最后替换主数据框中的新名称 df -

df = pd.DataFrame({'ID' : ['A', 'B', 'C'],
'CODES' : [{"np_1":5,"np_2":20,"np_3":1,"np_4":2,"np_5":4,"np_6":1},
{"np_7":19,"1801032636":16,"np_4":11,"np_6":18},
{"np_4":8,"np_1":4},]})

您可以在这里申请:

假设唯一列表数据框是unique_list_df:

u = df['CODES'].map(lambda x: [*x.keys()]).explode().unique()
d = dict(zip(u,'np_'+pd.Index((pd.factorize(u)[0]+1).astype(str))))

f = lambda x: {d.get(k,k): v for k,v in x.items()}
df['CODES'] = df['CODES'].apply(f)

print(df)

  ID                                              CODES
0  A  {'np_1': 5, 'np_2': 20, 'np_3': 1, 'np_4': 2, ...
1  B   {'np_7': 19, 'np_2': 16, 'np_4': 11, 'np_6': 18}
2  C                             {'np_4': 8, 'np_1': 4}