为了账号安全,请及时绑定邮箱和手机立即绑定

查找两个数据帧中值的交集,返回具有相同大小和交集数量的单个数据帧

查找两个数据帧中值的交集,返回具有相同大小和交集数量的单个数据帧

蛊毒传说 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 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信