簡體   English   中英

來自字典的數據框,其中值是列表

[英]Dataframe from dictionary where values are lists

dict = {'0': ['hu'],
        '1':['yi'],
        '2':['yu', 'song'],
        '3':['zhou', 'liu', 'wang']}

這是一個簡單的字典,我想在 Pandas 中創建一個類似於以下格式的數據框。 因為這種格式可以幫助我在 networkx 中加載圖形關系。

0 hu
1 yi
2 yuan
2 song
3 zhou
3 liu
3 wang

您可以先將字典轉換為元組列表:

final_arr=[(x, val) for x,y in d.items() for val in y ] #dict renamed as d
final_arr

[('0', 'hu'),
 ('1', 'yi'),
 ('2', 'yu'),
 ('2', 'song'),
 ('3', 'zhou'),
 ('3', 'liu'),
 ('3', 'wang')]

然后使用 DataFrame 類制作數據框:

df = pd.DataFrame(final_arr)
df

    0   1
0   0   hu
1   1   yi
2   2   yu
3   2   song
4   3   zhou
5   3   liu
6   3   wang

需要注意的是,不要使用“dict”作為變量名。 在此示例中,我已重命名為“d”。

用:

pd.DataFrame.from_dict(d, orient='index').stack().reset_index(level=1, drop=True)

或替代:

pd.DataFrame([(k,x) for k, v in d.items() for x in v]).set_index(0)

由於您是 Pandas 的新手,我向您展示了一個更容易閱讀的代碼。

  1. 由於熊貓的 DataFrame 對象需要兩個大小相同的列表,如下所示:

     d = {'col1': [1, 2], 'col2': [3, 4]} df = pd.DataFrame(data=d) df col1 col2 0 1 3 1 2 4

    我們使最初為空的列表:

     numb_list=[] text_list=[]
  2. 然后我們迭代你的字典,每次列表包含一個項目時,我們保存它的字典鍵和它的值,並使用 pop 將它從同一個列表中刪除。

     for i in dict: while (len(dict[i]) >= 1): numb_list.append(i) text_list.append(dict[i].pop())
  3. 最后,我們可以像這樣使用 DataFrame 對象:

     d = {'number': numb_list, 'text': text_list} df = pd.DataFrame(data=d)

暫無
暫無

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

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