簡體   English   中英

如何從pandas數據框創建字典?

[英]How to create a dict of dicts from pandas dataframe?

我有一個數據框df

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

我想用以下結構創建字典

{'id': xxx, 'data': {'price': xxx, 'date': xxx, 'zipcode': xxx}}

到目前為止我做了什么

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

但我得到上面的錯誤。

使用這兩種方法的正確方法是什么

  • 清單理解

要么

  • 熊貓.to_dict()

優點:算法的復雜度是多少?有沒有更有效的方法?

我建議名單理解。

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

或精簡版

data = [dict(id=i, data=j) for i, j in zip(df.pop('id'), df.to_dict(orient='r'))]

請注意,如果要在表達式中彈出id ,則它必須zip的第一個參數。

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'}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM