如何从pandas dataframe创建dict的dict?

2024-05-28 23:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df

id      price      date         zipcode
u734    8923944    2017-01-05   AERIU87
uh72    9084582    2017-07-28   BJDHEU3
u029    299433     2017-09-31   038ZJKE

我想用以下结构创建一个字典

^{pr2}$

到目前为止我所做的

ids = df['id']
prices = df['price']
dates = df['date']
zips = df['zipcode']
d = {'id':idx, 'data':{'price':p, 'date':d, 'zipcode':z} for idx,p,d,z in zip(ids,prices,dates,zips)}
>>> SyntaxError: invalid syntax

但我得到了上面的错误。在

正确的方法是什么

  • 列表理解

或者

  • 熊猫。给你听()

加分:算法的复杂性是什么,有没有更有效的方法来实现这一点?在


Tags: 数据方法ididsdfdatepriceprices
1条回答
网友
1楼 · 发布于 2024-05-28 23:51:39

我建议你理解一下清单。在

v = df.pop('id')
data = [
   {'id' : i, 'data' : j} 
   for i, j in zip(v, df.to_dict(orient='records'))
]

或者是紧凑版

^{pr2}$

注意,如果在表达式中弹出id,那么它的第一个参数是{}。在

print(data)
[{'data': {'date': '2017-09-31',
   'price': 299433,
   'zipcode': '038ZJKE'},
  'id': 'u029'},
 {'data': {'date': '2017-01-05',
   'price': 8923944,
   'zipcode': 'AERIU87'},
  'id': 'u734'},
 {'data': {'date': '2017-07-28',
   'price': 9084582,
   'zipcode': 'BJDHEU3'},
  'id': 'uh72'}]

相关问题 更多 >

    热门问题