Pandas数据帧:用两列合并三个数据帧,忽略大多数列?

2024-09-30 01:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下三个数据帧,它们被两列“索引”:有一个分组item1item2item3,等等,以及这个组中的一个数字位置148, 179, 188, 267, ...。在

import pandas as pd

data1 = {"grouping": ["item1", "item1", "item1", "item2", "item2", "item2", "item2", ...],
        "positions": [148, 179, 188, 267, 693, 963, 979, ...],
        "metadata": [5, 1, 8, 3, 731, 189, 9, ...], 
        "unique_column1" : ['QLZX9J', 'L3FPRU', '69TVKF', 'N096NQ', 'JM89V5', 'W7JBOL', '63KKZZ', ...] }




data2 = {"grouping": ["item1", "item1", "item1", "item1", "item1", "item1", "item2", ...],
        "positions": [118, 241, 431, 448, 455, 677, 740, ...],
        "metadata": [5, 1, 8, 3, 731, 189, 9, ...], 
        "unique_column2" : [4714, 1178, 235, 47, 54, 89, 12, ...] }

data3 = {"grouping": ["item1", "item1", "item1", "item1", "item1", "item1", "item1", ...],
        "positions": [118, 148, 179, 188, 241, 431, 448,...],
        "metadata": [5, 1, 8, 3, 731, 189, 9, ...], 
        "unique_column3" : ['a', 'a', 'a', 'a', 'a', 'a', 'a', ...] }


df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)

df1
>>>    grouping positions  metadata unique_column1
0     item1       148         5         QLZX9J
1     item1       179         1         L3FPRU
2     item1       188         8         69TVKF
3     item2       267         3         N096NQ
4     item2       693       731         JM89V5
5     item2       963       189         W7JBOL
6     item2       979         9         63KKZZ
7     ....        ...       ...         ... 

df2
>>>    grouping positions  metadata unique_column2
0     item1       118         5           4714
1     item1       241         1           1178
2     item1       431         8            235
3     item1       448         3             47
4     item1       455       731             54
5     item1       677       189             89
6     item2       740         9             12

df3
>>>    grouping positions  metadata unique_column3
0     item1       118         5              a
1     item1       148         1              a
2     item1       179         8              a
3     item1       188         3              a
4     item1       241       731              a
5     item1       431       189              a
6     item1       448         9              a

我想通过groupingpositions合并这三个数据帧,这样grouping=item1positions=118的行与{}中的同一行合并。这些数据帧之间有许多列是相同的,不应该被复制。事实上,df1中最终合并数据帧中要合并的唯一列是unique_column1,而在df2中是{},依此类推

如何将三个数据帧中的一列合并到一起,只使用两列作为索引?这似乎比pandas.merge()复杂一些

如果tem不存在,它应该是0。合并的表应该如下所示:

^{pr2}$

Tags: 数据dataframepandaspduniquedf1metadatadf2

热门问题