首页 > 解决方案 > 在右表上合并而不重复

问题描述

我需要以下加入 Pandas 的帮助:

我的第一个表有重复的日期,第二个是唯一的。当我按Date合并两个表时,第二个表获取重复值而不是第一个匹配,其余应该是NaN

有谁知道如何用 Python 做到这一点?

在此处输入图像描述

标签: pythonpandas

解决方案


对和列执行合并() :Datex

import pandas as pd

df1 = pd.DataFrame({'Date': ['2-Jul', '2-Jul', '3-Jul'],
                    'x': ['Bob', 'Bob', 'Alice'],
                    'y': [5, 9, 7]})

df2 = pd.DataFrame({'Date': ['2-Jul', '3-Jul'],
                    'x': ['Bob', 'Alice'],
                    'z': [2, 8]})

df3 = pd.merge(df1, df2, on=['Date', 'x'])
# print(df3)
    Date      x  y  z
0  2-Jul    Bob  5  2
1  2-Jul    Bob  9  2
2  3-Jul  Alice  7  8

pandas.DataFrame.duplicated()返回表示重复行的布尔系列。keep=first将重复项标记为 True,但第一次出现除外。的默认值keep是 first,所以你可以省略它。

pandas.DataFrame.mask()替换条件为 True 的值。

df3['z'].mask(df3.duplicated(subset=['Date', 'x'], keep='first'), inplace=True)
# print(df3)
    Date      x  y    z
0  2-Jul    Bob  5  2.0
1  2-Jul    Bob  9  NaN
2  3-Jul  Alice  7  8.0

推荐阅读