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

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

查找兩個數據幀中值的交集,返回具有相同大小和交集數量的單個數據幀

查找兩個數據幀中值的交集,返回具有相同大小和交集數量的單個數據幀

蠱毒傳說 2023-10-26 10:25:13
我正在尋找一種返回 (nxn) 數據幀的方法,其中數據幀的每個值都是兩個數據幀的值之間的交集數(兩者的大小均為 nxn)。我不太確定如何在兩個數據幀之間進行這樣的操作。任何幫助是極大的贊賞。謝謝!df1              0             10  [4, 7, 3, 5]  [4, 7, 3, 5]1     [8, 2, 6]     [8, 2, 6]2  [9, 1, 8, 2]  [9, 1, 8, 2]3        [3, 5]        [3, 5]4     [9, 4, 8]     [9, 4, 8]5     [0, 1, 4]     [0, 1, 4]df2              0             10  [2, 3, 6, 9]  [6, 2, 3, 5]1  [2, 3, 6, 9]  [6, 2, 3, 5]2  [2, 3, 6, 9]  [6, 2, 3, 5]3  [2, 3, 6, 9]  [6, 2, 3, 5]4  [2, 3, 6, 9]  [6, 2, 3, 5]5  [2, 3, 6, 9]  [6, 2, 3, 5]df3 - intended dataframe to be returned              0             10             1             21             1             22             2             13             1             24             0             05             0             0編輯:修復了示例結果的錯誤
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

嗯,我無法直接對 pandas 執行此操作,我只有字典的解決方案。我認為您的示例結果有錯誤,我認為我的結果是預期的結果。


import pandas as pd


# Prework to get your data

data = {0: [[4, 7, 3, 5], [8, 2, 6], [9, 1, 8, 2], [3, 5], [9, 4, 8], [0, 1, 4]],

        1: [[4, 7, 3, 5], [8, 2, 6], [9, 1, 8, 2], [3, 5], [9, 4, 8], [0, 1, 4]]}


data2 = {0: [[2, 3, 6, 9], [2, 3, 6, 9], [2, 3, 6, 9], [2, 3, 6, 9], [2, 3, 6, 9], [2, 3, 6, 9]],

         1: [[6, 2, 3, 5], [6, 2, 3, 5], [6, 2, 3, 5], [6, 2, 3, 5], [6, 2, 3, 5], [6, 2, 3, 5]]}


df = pd.DataFrame(data)

df2 = pd.DataFrame(data2)


# ---


dc = df.to_dict()

dc2 = df2.to_dict()


new_dc = dc.copy()

for key in dc:

    for val in dc[key]:

        new_dc[key][val] = len(set(dc[key][val]).intersection(dc2[key][val]))

new_df = pd.DataFrame(new_dc)


print(new_df)

輸出:


   0  1

0  1  2

1  2  2

2  2  1

3  1  2

4  1  0

5  0  0


查看完整回答
反對 回復 2023-10-26
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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