如何使用Pandas将两个数据帧与某些行中的update连接起来?

2024-04-26 23:21:57 发布

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

我是pandas的新手,我想知道如何连接两个文件并更新现有行,同时考虑特定列。这些文件有数千行。例如:

  • Df_1:

    A  B  C  D 
    1  2  5  4 
    2  2  6  8  
    9  2  2  1  
    

现在,我的表2有完全相同的列,我想连接两个表,替换此表和表1中的一些行,但C列中有更改/更新,并添加第二个表(df_2)中存在的新行,例如:

  • Df_2:

    A  B  C  D 
    2  2  7  8  
    9  2  3  1
    3  4  6  7
    1  2  3  4  
    

因此,我想要的结果是两个表的并集,并在特定列中的几行中更新它们,如下所示:

  • Df_结果:

    A  B  C  D 
    1  2  5  4 
    2  2  7  8  
    9  2  3  1  
    3  4  6  7
    1  2  3  4
    

如何使用merge或concatenate函数实现这一点?还是有其他方法可以达到我想要的结果

谢谢大家!


0条回答
网友
1楼 · 发布于 2024-04-26 23:21:57

你需要至少有一列作为参考,我的意思是,要知道更新需要更改什么

假设在你的例子中,在这个例子中是“A”和“B”

import pandas as pd
ref = ['A','B']
df_result = pd.concat([df_1, df_2], ignore_index = True)
df_result = df_result.drop_duplicates(subset=ref, keep='last')

这里有一个真实的例子

d = {'col1': [1, 2, 3], 'col2': ["a", "b", "c"], 'col3': ["aa", "bb", "cc"]}
df1 = pd.DataFrame(data=d)
d = {'col1': [1, 4, 5], 'col2': ["a", "d", "f"], 'col3': ["dd","ee", "ff"]}
df2 = pd.DataFrame(data=d)

df_result = pd.concat([df1, df2], ignore_index=True)

df_result = df_result.drop_duplicates(subset=['col1','col2'], keep='last')
df_result

enter image description here

相关问题 更多 >