亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據框存在/不存在的字典

數據框存在/不存在的字典

Helenr 2021-04-27 01:57:00
從2D字典中,如何將其轉換為數據框或存在/不存在的矩陣,其中列表中的值是列,鍵是行名?我將目標列表中的值累加到一個矩陣中。我一直在嘗試,但是沒有成功:values = set()for genome, info in dict_cluster.items():    for v in info:        #t = [genome, ([v for v in info])]        t = [genome,v]    print pd.DataFrame(t)輸入:A ['arylpolyene', 'hserlactone', 'hserlactone', 'nrps', 'siderophore', 't1pks-nrps', 'terpene', 'thiopeptide', 'transatpks-nrps']B ['hserlactone', 'hserlactone-arylpolyene', 'nrps', 'siderophore', 'thiopeptide']C ['nrps', 'nrps', 'nrps', 'siderophore', 't1pks-nrps', 't1pks-nrps']D ['nrps', 'siderophore', 't1pks-nrps']輸出:    arylpolyene siderophore hserlactone-arylpolyene transatpks-nrps terpene thiopeptide hserlactone nrps    t1pks-nrpsA   1   2   0   1   1   1   2   1   1B   0   1   1   0   0   1   1   1   0C   0   1   0   0   0   0   0   3   2D   0   1   0   0   0   0   0   1   1我的輸出是這樣的:                 00  GCF_900068895.11  transatpks-nrps                 00  GCA_002415165.11      thiopeptide                 00  GCA_000367685.21       t1pks-nrps                 00  GCA_002732135.11       t1pks-nrps
查看完整描述

3 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

也許您正在尋找這樣的東西:


val = {'A': ['arylpolyene', 'hserlactone', 'hserlactone', 'nrps', 'siderophore', 't1pks-nrps', 'terpene', 'thiopeptide', 'transatpks-nrps'],

       'B': ['hserlactone', 'hserlactone-arylpolyene', 'nrps', 'siderophore', 'thiopeptide'],

       'C': ['nrps', 'nrps', 'nrps', 'siderophore', 't1pks-nrps', 't1pks-nrps'],

       'D': ['nrps', 'siderophore', 't1pks-nrps']}

all_val = []

for k in val:

    for v in val[k]:

        all_val.append((k,v))


df = pd.DataFrame(all_val,columns=['key','val']).set_index('key')

df_count = df.pivot_table(index='key',columns='val',aggfunc=len)

輸出:


val  arylpolyene  hserlactone  hserlactone-arylpolyene  nrps  siderophore  \

key                                                                         

A            1.0          2.0                      NaN   1.0          1.0   

B            NaN          1.0                      1.0   1.0          1.0   

C            NaN          NaN                      NaN   3.0          1.0   

D            NaN          NaN                      NaN   1.0          1.0   


val  t1pks-nrps  terpene  thiopeptide  transatpks-nrps  

key                                                     

A           1.0      1.0          1.0              1.0  

B           NaN      NaN          1.0              NaN  

C           2.0      NaN          NaN              NaN  

D           1.0      NaN          NaN              NaN 


查看完整回答
反對 回復 2021-05-11
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

這應該可以完成您的工作(我正在使用Python3):


my_dict = {

            'A': ['arylpolyene', 'hserlactone', 'hserlactone', 'nrps', 'siderophore', 't1pks-nrps', 'terpene', 'thiopeptide', 'transatpks-nrps'],

            'B': ['hserlactone', 'hserlactone-arylpolyene', 'nrps', 'siderophore', 'thiopeptide'],

            'C': ['nrps', 'nrps', 'nrps', 'siderophore', 't1pks-nrps', 't1pks-nrps'],

            'D': ['nrps', 'siderophore', 't1pks-nrps']

            }


rows_list=list(my_dict.keys())

values=list(my_dict.values())

rows_size=len(rows_list)


columns_list = []


for sublist in values:

    for item in sublist:

        if item not in columns_list:

            columns_list.append(item)


columns_size = len(columns_list)


#initialize adjacent matrix

print('Initial adjacent matrix')

adjacent = [ [0]*columns_size for i in range(rows_size) ]

for row in adjacent:

    print(row)


for key, value in my_dict.items():

    for v in value:

        adjacent[rows_list.index(key)][columns_list.index(v)] += 1


print('-'*50)

print('Final adjacent matrix')

for row in adjacent:

    print(row)

在第一個循環中,for sublist in values:我創建一個列表,其中包含您想要的值作為沒有重復項的列。


在“adjacent = [ [0]*columns_size for i in range(rows_size) ]我創建的列表”中,元素與字典鍵的數量一樣多。每個元素都是一個列表,其中元素的數量與列值的數量一樣多。


查看完整回答
反對 回復 2021-05-11
  • 3 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號