Pandas。需要使用值映射合并表格。

3

合并两个表格,并在两个表格中都包含相同值的行中分配值。

我有两个数据框表格:

Table1=


| Column A | Column B | Column C |
| -------- | -------- | -------- |
| Cell 1   | Cell 2   |  None    |
| Cell 3   | Cell 4   |  None    |

表2 =


| Column A | Column B | Column C |
| -------- | -------- | -------- |
| Cell 1   | Cell 2   |  Value1  |
| Cell 3   | Cell 4   |  Value2  |


Table1 =
| Column A | Column B | Column C |
| -------- | -------- | -------- |
| Cell 1   | Cell 2   |  None    |<--|
| Cell 3   | Cell 4   |  None    |   |
                                     |
Table2 =                             | Table1[A][0] == Table2[A][0] -> Table1[C][0] = Table2[C][0]
| Column A | Column B | Column C |   | And so with all the                            
                                       lines that have a match, for example, by the value in                                                                                       
| -------- | -------- | -------- |   | columns A
| Cell 1   | Cell 2   |  Value1  |<--|
| Cell 3   | Cell 4   |  Value2  |    

第一个表比第二个表

第一个表和第二个表具有相同的值。我想要在第一个表中为与第一个表中相同的值填充C列。

简单来说,如果表1和表2在某些列中具有相同的值,例如在A列中,则第二个表中C列的值将分配给第一个表中的C列。

if Table1[A]['value'] == Table2[A]['value']: Table1[C]['value'] = Table2[C]['value']

我试图合并这些表格,但是它们没有合并成功(表格1保持不变):

df = Table1['C'].merge(Table2, on=['C'], how='left')
2个回答

1

将共同列设置为索引,然后在table1上使用update从table2中替换值。

cols = ['Column A', 'Column B']

Table1 = Table1.set_index(cols)
Table1.update(Table2.set_index(cols))
Table1 = Table1.reset_index()

结果

print(Table1)

  Column A Column B Column C
0   Cell 1   Cell 2   Value1
1   Cell 3   Cell 4   Value2

0

假设您不需要保留Table1['Table C']中的任何数据,那么您可以从第一个表中删除Table C,然后进行merge操作。

Table1 = Table1.drop(['Table C'], axis=1)
Table1 = Table1.merge(Table2, on=['Table A', 'Table B'], how='left')

输出:

Table1

注意:

如果你想要一行代码:

Table1 = Table1.drop(['Table C'], axis=1).merge(Table2, on=['Table A', 'Table B'], how='left')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接