繁体   English   中英

熊猫字典的清单

[英]List of dict of dict in Pandas

我有以下形式的命令列表:

[{0:{'city':'newyork', 'name':'John', 'age':'30'}}, {0:{'city':'newyork', 'name':'John', 'age':'30'}},]

我想以以下形式创建pandas DataFrame:

city name age newyork John 30 newyork John 30

尝试了很多但没有成功

你能帮助我吗?

concatDataFrame.from_dict使用列表DataFrame.from_dict

L = [{0:{'city':'newyork', 'name':'John', 'age':'30'}},
 {0:{'city':'newyork', 'name':'John', 'age':'30'}}]

df = pd.concat([pd.DataFrame.from_dict(x, orient='index') for x in L])
print (df)
   name age     city
0  John  30  newyork
0  John  30  newyork

具有多个具有新列id键的解决方案应为:

L = [{0:{'city':'newyork', 'name':'John', 'age':'30'}, 
      1:{'city':'newyork1', 'name':'John1', 'age':'40'}},
     {0:{'city':'newyork', 'name':'John', 'age':'30'}}]

L1 = [dict(v, id=k) for x in L for k, v in x.items()]
print (L1)
[{'name': 'John', 'age': '30', 'city': 'newyork', 'id': 0}, 
 {'name': 'John1', 'age': '40', 'city': 'newyork1', 'id': 1}, 
 {'name': 'John', 'age': '30', 'city': 'newyork', 'id': 0}]
df = pd.DataFrame(L1)
print (df)
  age      city  id   name
0  30   newyork   0   John
1  40  newyork1   1  John1
2  30   newyork   0   John
import pandas as pd 
d = [{0:{'city':'newyork', 'name':'John', 'age':'30'}},{0:{'city':'newyork', 'name':'John', 'age':'30'}},]   
df = pd.DataFrame([list(i.values())[0] for i in d])
print(df)

输出:

  age     city  name
0  30  newyork  John
1  30  newyork  John
from pandas import DataFrame

ldata = [{0: {'city': 'newyork', 'name': 'John', 'age': '30'}},
         {0: {'city': 'newyork', 'name': 'John', 'age': '30'}}, ]

# 根据上面的ldata创建一个Dataframe
df = DataFrame(d[0] for d in ldata)
print(df)
"""
The answer is:
  age     city  name
0  30  newyork  John
1  30  newyork  John
"""

您可以使用:

In [41]: df = pd.DataFrame(next(iter(e.values())) for e in l)

In [42]: df
Out[42]: 
  age     city  name
0  30  newyork  John
1  30  newyork  John

来到了新的解决方案。 不像这里发布的那么简单,但是可以正常工作

L = [{0:{'city':'newyork', 'name':'John', 'age':'30'}},
     {0:{'city':'newyork', 'name':'John', 'age':'30'}}]


df = [L[i][0] for i in range(len(L))]


df = pd.DataFrame.from_records(df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM