簡體   English   中英

pandas DF 超出索引 = 鍵的字典列表

[英]pandas DF out of list of dictionaries with index = keys

我想將字典列表傳遞給 dataframe:

mylist_of_dicts= [{'H1': 2},
                  {'H2': 2},
                  {'H3': 3},
                  {'H4': 2},
                  {'H5': 2},
                  {'B6': 2},
                  {'H7': 2},
                  {'H8': 2}]
cl_ocurrences = pd.DataFrame(mylist)
print(cl_ocurrences.head(2))
cl_ocurrences = pd.DataFrame.from_dict(mylist)
print(cl_ocurrences.head(2))
cl_ocurrences = pd.DataFrame.from_records(mylist)
print(cl_ocurrences.head(2))

但我希望鍵出現在列中,值出現在另一列中。

我可以玩弄列表推導並將兩個列表(值和鍵)傳遞給 DF 構造函數,但應該有更好的方法。

我不確定 Pandas 中是否有明確的 function 來解開您想要的格式的字典列表。

這結合了reduce和字典的新 union 方法(我認為它在 python 3.9 中生效):

from functools import reduce
merged_dict = reduce(lambda x, y: x|y, mylist)
(pd.DataFrame.from_dict(merged_dict, 
                       orient = 'index', 
                       columns = ['value'])
 .rename_axis('H')
 .reset_index()
 )

    H  value
0  H1      2
1  H2      2
2  H3      3
3  H4      2
4  H5      2
5  B6      2
6  H7      2
7  H8      2

對於小於 3.9 的 python 版本,解包也可以正常工作:

merged_dict = reduce(lambda x, y: {**x, **y}, mylist)

您還可以使用itertoolsmap的組合:

pd.DataFrame(chain.from_iterable(map(lambda x: x.items(), mylist)), 
             columns = ['H', 'value'])

如果您的個人 dicts 有一個固定的結構(例如 {'H':value} 對於所有這些,那么我會重新定義個人 dicts 以使它們具有相同的標簽:

extended_list = [{'name': next(iter(x)), 'value': x[next(iter(x))]} for x in mylist]
cl_ocurrences = pd.DataFrame.from_dict(extended_list)
print(cl_ocurrences.head())

這導致

  name  value
0   H1      2
1   H2      2
2   H3      3
3   H4      2
4   H5      2

暫無
暫無

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

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