从 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"}]
任何指导将不胜感激。
在你的情况下 groupby
和 to_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}]