#### Compare Dataframes using multivariable conditions

df条件

``````A  |  B  |  C  |  D  |  E  | F |
A1 | B1  |     |     |     | F1|
A2 | B2  |     |     |     | F2|
A3 | B3  |     |  D3 |     | F3|
A4 | B4  |     |  D4 |  E4 | F4|
``````

df结果

``````A  |  B  |  C  |  D  |  E  | G  | H  |
A1 | B1  |  C1 |  D1 |  E1 | G1 | H1 |
A2 | B2  |  C2 |  D2 |  E2 | G2 | H2 |
A3 | B3  |  C3 |  D3 |  E3 | G3 | H3 |
A4 | B4  |  C4 |  D4 |  E4 | G4 | H4 |
``````

F列的参数值包含在merge（）中，因此我想要df结果

``````df Result = pd.merge(df Result, df Conditions[[A,B,C,D,E,F]], on = [A,B,C,D,E], how = 'left')
``````

``````A  |  B  |  C  |  D  |  E  | G  | H  | F |
A1 | B1  |  C1 |  D1 |  E1 | G1 | H1 |   |
A2 | B2  |  C2 |  D2 |  E2 | G2 | H2 |   |
A3 | B3  |  C3 |  D3 |  E3 | G3 | H3 |   |
A4 | B4  |  C4 |  D4 |  E4 | G4 | H4 | F4|
``````

1 个回复

``````df_Conditions = pd.DataFrame(columns=['A', 'B', 'C', 'D', 'E', 'F'],
data=[['A1', 'B1', None, None, None, 'F1'],
['A2', 'B2', None, None, None, 'F2'],
['A3', 'B3', None, 'D3', None, 'F3'],
['A4', 'B4', None, 'D4', 'E4', 'F4'],
])

df_Result = pd.DataFrame(columns=['A', 'B', 'C', 'D', 'E', 'G', 'H'],
data=[['A1', 'B1', 'C1', 'D1', 'E1', 'G1', 'H1'],
['A2', 'B2', 'C2', 'D2', 'E2', 'G2', 'H2'],
['A3', 'B3', 'C3', 'D3', 'E3', 'G3', 'H3'],
['A4', 'B4', 'C4', 'D4', 'E4', 'G4', 'H4'],
])
``````

``````res = pd.merge(df_Result, df_Conditions, on=['A', 'B', 'C', 'D', 'E'], how='left')
res
Out[8]:
A   B   C   D   E   G   H    F
0  A1  B1  C1  D1  E1  G1  H1  NaN
1  A2  B2  C2  D2  E2  G2  H2  NaN
2  A3  B3  C3  D3  E3  G3  H3  NaN
3  A4  B4  C4  D4  E4  G4  H4  NaN
``````

``````wildcards_C = df_Conditions[df_Conditions['C'].isnull()].dropna(axis=1, how='all')
wildcards_C
Out[10]:
A   B     D     E   F
0  A1  B1  None  None  F1
1  A2  B2  None  None  F2
2  A3  B3    D3  None  F3
3  A4  B4    D4    E4  F4
``````

``````res.update(df_Result.merge(wildcards_C, how='left'), overwrite=False)
res
Out[12]:
A   B   C   D   E   G   H    F
0  A1  B1  C1  D1  E1  G1  H1  NaN
1  A2  B2  C2  D2  E2  G2  H2  NaN
2  A3  B3  C3  D3  E3  G3  H3  NaN
3  A4  B4  C4  D4  E4  G4  H4   F4
``````

``````wildcards_E = df_Conditions[df_Conditions['E'].isnull()].dropna(axis=1, how='all')
res.update(df_Result.merge(wildcards_E, how='left'), overwrite=False)
res
Out[6]:
A   B   C   D   E   G   H    F
0  A1  B1  C1  D1  E1  G1  H1  NaN
1  A2  B2  C2  D2  E2  G2  H2  NaN
2  A3  B3  C3  D3  E3  G3  H3   F3
3  A4  B4  C4  D4  E4  G4  H4   F4
``````

``````wildcards_D = df_Conditions[df_Conditions['D'].isnull()].dropna(axis=1, how='all')
res.update(df_Result.merge(wildcards_D, how='left'), overwrite=False)
res
Out[6]:
A   B   C   D   E   G   H   F
0  A1  B1  C1  D1  E1  G1  H1  F1
1  A2  B2  C2  D2  E2  G2  H2  F2
2  A3  B3  C3  D3  E3  G3  H3  F3
3  A4  B4  C4  D4  E4  G4  H4  F4
``````

1 Python：根据两个条件比较数据框

2017-09-01 11:55:01 1 78   pandas
2 使用KNN与数据帧进行比较

2017-01-10 15:00:15 1 97   knn
3 使用具有多变量函数的outer（）

2012-08-14 11:10:10 2 3874   r
4 R通过多个条件与两个数据帧进行比较以提取行

2020-03-06 15:26:15 2 151   r
5 在多种条件下比较两个 Pandas 数据框的相等性

6 根据多行条件比较两个不同的数据帧

2020-07-13 16:07:20 1 36   merge
7 在多个条件下比较两个不同大小的数据框

2019-01-13 14:45:55 3 90   pandas
8 如何使用列索引比较两个数据框？

2020-06-04 21:12:20 1 30   pandas
9 使用熊猫比较两个数据框的列值

10 使用R中的折线图比较两个数据框

my_query数据框1 数据框2 我想通过在r作图来比较这两个。能否在这里提出建议？ 注意：我尝试了不同的方法，但是没有运气 ...

2018-06-26 17:50:44 2 44   r