python - 在右表上合并而不重复
问题描述
我需要以下加入 Pandas 的帮助:
我的第一个表有重复的日期,第二个是唯一的。当我按Date合并两个表时,第二个表获取重复值而不是第一个匹配,其余应该是NaN
。
有谁知道如何用 Python 做到这一点?
解决方案
对和列执行合并() :Date
x
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
推荐阅读
- api - Flutter - 在共享首选项的响应标头中保存令牌
- javascript - Javascript对象解构,变量中的属性名称
- git - 来自 Visual Studio Code 和 Visual Studio(但不是 Git Bash)的“权限被拒绝”错误
- vba - 将每个页面保存为它自己的文档,标题为来自数据源的值
- python - 尝试在 Pycharm 的 python 控制台中运行此函数,但无论我将返回函数放在哪里,我都会收到错误消息
- python - 在 Dataflow Python flex 模板中包含另一个文件 ImportError
- postgresql-9.5 - 没有与 ON CONFLICT 规范匹配的唯一或排除约束
- python - 创建第二个索引列以获取 2 级 MultiIndex
- sql - BigQuery 中按 2 列分区
- javascript - 如何通过 HTML DOM 向元素添加 oninput 属性?