gpt4 book ai didi

pandas - 使用 Pandas 将一行中的多个值拆分为多行

转载 作者:行者123 更新时间:2023-12-01 12:05:44 27 4
gpt4 key购买 nike

我的数据如下:

d = [{'id':1, 'a':10, 'b':10}, {"id":2,"a":20, "b":20}]  

我想要的结果如下:

res = [{'id': 1, 'prop': 'a', 'value': 10},
{'id': 1, 'prop': 'b', 'value': 10},
{'id': 2, 'prop': 'a', 'value': 20},
{'id': 2, 'prop': 'b', 'value': 20}]

由于每一行都有两个属性,我想拆分具有相同 id 但属性不同的每一行以及该属性的对应值

我正在使用 iterrows

import pandas as pd
df = pd.DataFrame(d)
l = []
for _, r in df.iterrows():
for p in ['a','b']:
l.append({'id':r.id, 'prop':p, 'value':r[p]})

我得到了我想要的,但我想知道是否有任何方法可以使用纯 pandas 命令来实现我的目标

最佳答案

使用pd.melt然后使用 to_json使用 orient=records

使用 json.loads 将字符串 json 转换为正确的列表格式

import json
d = [{'id':1, 'a':10, 'b':10}, {"id":2,"a":20, "b":20}]

df = pd.DataFrame(d)

res = pd.melt(df,id_vars=['id'],value_vars=['a','b'],var_name='prop')

json_res= json.loads(res.to_json(orient='records'))
[{"id":1,"prop":"a","value":10},{"id":2,"prop":"a","value":20},{"id":1,"prop":"b","value":10},{"id":2,"prop":"b","value":20}]

关于pandas - 使用 Pandas 将一行中的多个值拆分为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57247413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com