从 json 行中删除字符串

remove string from json row

我正在从数据框中提取几列并将它们添加到新列中。

A B C
1 3 6
1 2 4 
4 5 0 

df['D'] = df.apply(lambda x: x[['C', 'B']].to_json(), axis=1)

然后我创建了一个新的数据框来定位 df['A'] 的唯一实例:

df2 = pd.DataFrame({'A': df.A.unique()})

最后,我在 df2 中创建了一个新列,其中列出了 df['B']df['C']

的值
df2['E'] = [list(set(df['D'].loc[df['A'] == x['A']]))
                     for _, x in df2.iterrows()]

但这是对每个对象进行串接:

A B C D
1 3 6 ['{"B":"3","C":6"}', '{"B":"2","C":4"}']

此外,当我将其转储到 JSON 中时,我得到:

payload = json.dumps(data)

我得到这个结果:

["{\"B\":\"3\",\"C\":"6"}", "{\"B\":\"2\",\"C\":""}"]

但我最终希望删除对象上的字符串并将其作为输出:

[{"B":"3","C":"6"}, {"B":"2","C":"4"}]

任何指导将不胜感激。

在你的情况下 groupbyto_dict

out = df.groupby('A').apply(lambda x : x[['B','C']].to_dict('records')).to_frame('E').reset_index()
out
Out[198]: 
   A                                     E
0  1  [{'B': 3, 'C': 6}, {'B': 2, 'C': 4}]
1  4                    [{'B': 5, 'C': 0}]