首页 > 解决方案 > 如何检查单元格数据是否存在于两个不同的数据框行中

问题描述

我有两个文件。他们已经按第一列排序。我需要一些如何检查第一个文件中的行数据是否等于(或存在)到第二个文件中的同一行。如果数据不存在(意味着新值或已更改)我想用“”更新这两个文件。

例子

老的

col1 col2 col3 col4

val1 val2 val3 val4
val5 val6 val7 val8

新的

col1 col2 col3 col4 
val1 val2 val3 val4
val9 val5 val6 val7 

结果

old_updated

col1 col2 col3 col4 col5
val1 val2 val3 val4 nan
     val5 val6 val7 val8

新更新

col1 col2 col3 col4 col5
val1 val2 val3 val4 
val9 val5 val6 val7 

我已经为系列尝试过 isin

标签: pandaspython-2.7

解决方案


这是一个使用 pandas 合并的开始,将指标标志设置为 True。这将添加一列,告诉您该行的来源是什么。

dfnew = pd.DataFrame([["x","y","z","t"], ["a","s","b","e"]], 
                     columns=("col1","col2","col3","col4"))
dfold = pd.DataFrame([["x","y","z","t"],["d","a","b","t"]], 
                     columns=("col1","col2","col3","col4"))

df_merge = pd.merge(dfnew, dfold, how="outer", indicator=True)
>>>
  col1 col2 col3 col4      _merge
0    x    y    z    t        both
1    a    s    b    e   left_only
2    d    a    b    t  right_only

使用外部连接,您将看到所有内容。how="left"如果您只想要dfnew表示的行,您可以这样做。

从这里你可以在_merge你认为合适的时候屏蔽列等。您的用例尚不清楚,因此这应该可以帮助您。


推荐阅读