Pandas比较两个数据帧并确定匹配值

2024-09-29 19:31:40 发布

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

我有以下数据帧:

print(dfa)

ID                             Value
AA12 101 BB101 CC01 DE06       1
AA11 102 BB101 CC01 234 EE07   2
AA10 202 BB101 CC01 345 EE09   3
AA13 103 BB101 CC02 123        4
AA14 203 BB101 CC02 456        5
AA15 204 BB102 CC03 567        6


print(dfb)

ID                             Value
AA10 202 BB101 CC01 EE09 345   3
AA11 102 BB101 CC01 EE07 234   2
AA12 101 BB101 CC01 DE06       1
AA13 103 BB101 CC02 123        4
AA18 203 BB103 CC01 456        5
AA15 204 BB201 CC11 678        7

我想比较一下(dfa.ID, dfa值)给那个(dfb.ID, dfb值). 如果它们完全匹配(即使子字符串的顺序不相同),我想在新的“ID Matched?”上打印“Yes”“价值匹配?”数据帧“dfa”中的列。在

期望输出为:

^{pr2}$

Tags: 数据idvalueprintdfadfbaa11aa12
1条回答
网友
1楼 · 发布于 2024-09-29 19:31:40

您可以执行类似的操作:

In [40]: pd.merge(a.assign(x=a.ID.str.split().apply(sorted).str.join(' ')),
    ...:          b.assign(x=b.ID.str.split().apply(sorted).str.join(' ')),
    ...:          on=['x','Value'],
    ...:          how='outer',
    ...:          indicator=True)
    ...:
Out[40]:
                           ID_x  Value                             x  \
0      AA12 101 BB101 CC01 DE06      1      101 AA12 BB101 CC01 DE06
1  AA11 102 BB101 CC01 234 EE07      2  102 234 AA11 BB101 CC01 EE07
2  AA10 202 BB101 CC01 345 EE09      3  202 345 AA10 BB101 CC01 EE09
3       AA13 103 BB101 CC02 123      4       103 123 AA13 BB101 CC02
4       AA14 203 BB101 CC02 456      5       203 456 AA14 BB101 CC02
5       AA15 204 BB102 CC03 567      6       204 567 AA15 BB102 CC03
6                           NaN      5       203 456 AA18 BB103 CC01
7                           NaN      7       204 678 AA15 BB201 CC11

                           ID_y      _merge
0      AA12 101 BB101 CC01 DE06        both
1  AA11 102 BB101 CC01 EE07 234        both
2  AA10 202 BB101 CC01 EE09 345        both
3       AA13 103 BB101 CC02 123        both
4                           NaN   left_only
5                           NaN   left_only
6       AA18 203 BB103 CC01 456  right_only
7       AA15 204 BB201 CC11 678  right_only

说明:

^{pr2}$

相关问题 更多 >

    热门问题