[英]Create DataFrame from list of dicts in Pandas series
我有一個 Pandas 系列,每個“行”的字符串數據結構如下:
["[{'id': 240, 'name': 'travolta'}, {'id': 378, 'name': 'suleimani'}, {'id': 730, 'name': 'pearson'}, {'id': 1563, 'name': 'googenhaim'}, {'id': 1787, 'name': 'al_munir'}, {'id': 10183, 'name': 'googenhaim'}, {'id': 13072, 'name': 'vodkin'}]"]
當我使用標准解決方案獲取 DataFrame 時,我得到了:
> 0 [{'id': 240, 'name': 'travolta'}, {'id': 378, ...
> 1 [{'id': 240, m'name': 'suleimani'}, {'id': 378,...
如何使用由dict鍵命名的列制作顯式DataFrame?
您可以使用 json 模塊加載該結構:
import json
data = ["[{'id': 240, 'name': 'travolta'}, {'id': 378, 'name': 'suleimani'}, {'id': 730, 'name': 'pearson'}, {'id': 1563, 'name': 'googenhaim'}, {'id': 1787, 'name': 'al_munir'}, {'id': 10183, 'name': 'googenhaim'}, {'id': 13072, 'name': 'vodkin'}]"]
data = ''.join(data).replace('\'', '"')
data = json.loads(data)
df = pd.DataFrame(data)
#print result df
# id name
0 240 travolta
1 378 suleimani
2 730 pearson
3 1563 googenhaim
4 1787 al_munir
import pandas
import ast
spam = ["[{'id': 240, 'name': 'travolta'}, {'id': 378, 'name': 'suleimani'}, {'id': 730, 'name': 'pearson'}, {'id': 1563, 'name': 'googenhaim'}, {'id': 1787, 'name': 'al_munir'}, {'id': 10183, 'name': 'googenhaim'}, {'id': 13072, 'name': 'vodkin'}]"]
eggs = ast.literal_eval(spam[0])
df = pandas.DataFrame(eggs)
print(df)
輸出
id name
0 240 travolta
1 378 suleimani
2 730 pearson
3 1563 googenhaim
4 1787 al_munir
5 10183 googenhaim
6 13072 vodkin
正如我在評論中提到的,您沒有字典列表,而是單元素列表,其中元素是表示字典列表的字符串文字。
對於您的示例的輸入,您可以使用ast.literal_eval ,然后是主列表的扁平化lst
,如下所示:
import pandas as pd
import ast
lst = ["[{'id': 240, 'name': 'travolta'}, {'id': 378, 'name': 'suleimani'}, {'id': 730, 'name': 'pearson'}, {'id': 1563, 'name': 'googenhaim'}, {'id': 1787, 'name': 'al_munir'}, {'id': 10183, 'name': 'googenhaim'}, {'id': 13072, 'name': 'vodkin'}]"]
rows = [d for l in [ast.literal_eval(e) for e in lst] for d in l]
frame = pd.DataFrame(rows)
print(frame)
輸出
id name
0 240 travolta
1 378 suleimani
2 730 pearson
3 1563 googenhaim
4 1787 al_munir
5 10183 googenhaim
6 13072 vodkin
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.