簡體   English   中英

從熊貓數據幀制作字典

[英]Making a dictionary from pandas dataframes

我有熊貓數據框 ,看起來像這樣:

**towns**
Paris
Berlin
London
etc..

另外,我還有一個數據框totalPopulation ,看起來像這樣:

ID-cell    TOWNS      NumberOfPopulation
1          Paris       444
1          Berlin      333
1          London      111
2          Paris       222
2          London      555
3          Paris       999

我需要創建一個帶有嵌套列表的字典,以得到如下所示的內容:

'Paris' : [1, 444],[2,222],[3,999]
'Berlin': [1,333]
'London': [1,111], [2,555]

我試圖做這樣的事情:

dictionary = {}
for town in towns.itertuples(index = False):
  dictionary[town] = totalPopulation.loc[totalPopulation['TOWNS'] == town].sort_values(totalPopulation.columns[2], ascending=False)

當我在循環之后調用print方法時,我得到了一個數字列表,我認為是索引。 我期待着價值。 :D

編輯:我只是重新啟動計算機(不是因為這個原因:D),然后再次運行我的程序。 現在我明白了:

{Pandas(town='Paris'): Empty DataFrame
Columns: [ID-cell, TOWNS, NumberOfPopulation]
Index: [], Pandas(Province='London'): Empty DataFrame
Columns: [ID-cell, TOWNS, NumberOfPopulation]
....}

當我嘗試

print(dictionary['Paris']) 

我收到keyError

您可以使用groupbyto_dict

df.groupby('TOWNS')['ID-cell','NumberOfPopulation'].apply(lambda x : x.values.tolist()).get(towns)
{'Berlin': [[1, 333]],
 'London': [[1, 111], [2, 555]],
 'Paris': [[1, 444], [2, 222], [3, 999]]}

如果您可以接受元組列表,則這是一種方法。 假設您的數據框已經按ID-cell進行了排序,並且對於每個城鎮,此數字都是唯一的。

from functools import partial

res = df.groupby(['TOWNS'])['NumberOfPopulation']\
        .apply(partial(enumerate, start=1))\
        .apply(list)\
        .to_dict()

print(res)

{'Berlin': [(1, 333)],
 'London': [(1, 111), (2, 555)],
 'Paris': [(1, 444), (2, 222), (3, 999)]}

暫無
暫無

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

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