第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

根據(jù)列表和熊貓數(shù)據(jù)框制作字典

根據(jù)列表和熊貓數(shù)據(jù)框制作字典

收到一只叮咚 2021-04-29 06:27:24
我有一個看起來像df的數(shù)據(jù)框    1   2   3   4   50   1   1   1   0   0 1   1   1   0   0   0 2   1   0   0   1   1 3   1   1   0   1   0 4   0   1   1   0   0 還有一本字典,看起來像dict = {(1, 2): 0,       (1, 3): 0,       (1, 4): 0,       (1, 5): 0,       (2, 1): 0,       (2, 3): 0,       (2, 4): 0,       (2, 5): 0,       (3, 1): 0,       (3, 2): 0,       (3, 4): 0,       (3, 5): 0,       (4, 1): 0,       (4, 2): 0,       (4, 3): 0,       (4, 5): 0,       (5, 1): 0,       (5, 2): 0,       (5, 3): 0,       (5, 4): 0}我想要兩件事:首先,如果key(i,j)= key(j,i)刪除它,例如:key(1,2)和key(2,1)我想刪除(2,1),所以最后一個字典將dict = {(1, 2): 0,       (1, 3): 0,       (1, 4): 0,       (1, 5): 0,       (2, 3): 0,       (2, 4): 0,       (2, 5): 0,       (3, 4): 0,       (3, 5): 0,       (4, 5): 0}第二個我想更新數(shù)據(jù)幀df的值,如果作為dict中的鍵的列具有相同的值(即1),例如:1和2列的key(1,2)在同一行中有1次3因此key(1,2)的值將更新為3,依此類推..因此,最終的dict將是dict = {(1, 2): 3,       (1, 3): 1,       (1, 4): 2,       (1, 5): 1,       (2, 3): 2,       (2, 4): 1,       (2, 5): 0,       (3, 4): 0,       (3, 5): 0,       (4, 5): 1}非常感謝您的幫助
查看完整描述

2 回答

?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

這似乎可以解決問題:


d_1 = {(1, 2): 0,

       (1, 3): 0,

       (1, 4): 0,

       (1, 5): 0,

       (2, 1): 0,

       (2, 3): 0,

       (2, 4): 0,

       (2, 5): 0,

       (3, 1): 0,

       (3, 2): 0,

       (3, 4): 0,

       (3, 5): 0,

       (4, 1): 0,

       (4, 2): 0,

       (4, 3): 0,

       (4, 5): 0,

       (5, 1): 0,

       (5, 2): 0,

       (5, 3): 0,

       (5, 4): 0}


new_keys = []

for k in d_1:

    invert = (k[1], k[0])

    if invert not in new_keys:

        new_keys.append(k)


d_2 = {}

for k in new_keys:

    d_2[k] = d_1[k]


df = [

  [1,  1,  1,  0,  0],

  [1,  1,  0,  0,  0],

  [1,  0,  0,  1,  1],

  [1,  1,  0,  1,  0],

  [0,  1,  1,  0,  0],

]


d_3 = {}

for k in d_2:

    v = 0

    c1, c2 = k[0] - 1, k[1] - 1

    for line in df:

        if line[c1] == line[c2]:

            v += 1

    d_3[k] = v


print(d_3)

輸出:


{(1, 2): 3, (1, 3): 1, (1, 4): 3, (1, 5): 2, (2, 3): 3, (2, 4): 1, (2, 5): 0, (3, 4): 1, (3, 5): 2, (4, 5): 4}

(看來您的示例至少有一個錯誤:您的結果(1,4)應該為3,而不是2,因為第2、3和4行與第1和4列匹配。)


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號