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

我正在寻找一种返回 (nxn) 数据帧的方法,其中数据帧的每个值都是两个数据帧的值之间的交集数(两者的大小均为 nxn)。


我不太确定如何在两个数据帧之间进行这样的操作。任何帮助是极大的赞赏。


谢谢!


df1

              0             1

0  [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             1

0  [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             1

0             1             2

1             1             2

2             2             1

3             1             2

4             0             0

5             0             0

编辑:修复了示例结果的错误


蛊毒传说
浏览 84回答 1
1回答

慕码人2483693

嗯,我无法直接对 pandas 执行此操作,我只有字典的解决方案。我认为您的示例结果有错误,我认为我的结果是预期的结果。import pandas as pd# Prework to get your datadata = {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  10  1  21  2  22  2  13  1  24  1  05  0  0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python