python - Pandas - pd.merge,添加检查以确保列不存在?
问题描述
我有两个数据框,一个是我使用的主要数据框,一个是我想从中获取信息的辅助数据框。
df1
(main) 包含一个带有各种名称字符串的 Reporter 列。
df2
(附加信息)包含记者姓名和他们的位置。
我希望将位置列添加为df1
.
我可以一次性完成以下操作:
df1 = pd.merge(df1, df2, on='Reporter', how='left')
它有效。
我的问题是我运行一个经常更新的脚本(检查新行并检查旧行的更新)并重复运行这行代码为每次执行添加多个列。
仅检查列是否存在的问题在于,我确实想知道/更新其位置的 df 可能已添加了一个新行(包含新的报告者名称)。
我会以正确的方式解决这个问题吗?还是我应该每次都进行某种字典查找并有条件地映射位置?我怎么能在熊猫中做到这一点?
解决方案
问题pd.merge
在于它总是在结果中添加后缀。
不要使用它。
使用等价的DataFrame.join
或DataFrame.merge
在您正在执行 LEFT JOIN 的那个上。
df1 = df1.join(df2, on='Reporter', how='left')
或者,
df1 = df1.merge(df2, on='Reporter', how='left')
公共列在结果中只保留一次。但是,两者之间的其他相同列(如果有的话)是重复的(带有后缀)。
推荐阅读
- google-play - 可在应用内获取的 Google Play 商店评论标识符
- javascript - Javascript 正则表达式 /^(19|20)([0-9]{2})-([0-9]{2}|0[0-9]{1})-([0-9]{2} |0[0-9]{1})$/g 没有找到日期作为输入值
- java - 如何将 Scala 转换导出到 Java
- git - MR 的 gitlab api 中的身份验证
- caching - 汇编语言如何使具有特定缓存设计的计算机运行得更快?
- javascript - 正则表达式 - 以特定字符串开头但不以另一个子字符串结尾
- lotusscript - NotesJSONNavigator 在解析具有空字符串值的包时遇到严重问题
- java - 如何获取要包含在 readNetFromTensorflow() 中的数据集路径
- sql - 子查询 GROUP BY 运算符
- c# - 任何文件夹的 C# 访问被拒绝