UPSERT操作更新或在表中插入一行,具体取决于表是否已有一行与数据匹配:
if table t has a row exists that has key X:
update t set mystuff... where mykey=X
else
insert into t mystuff...
Run Code Online (Sandbox Code Playgroud)
由于Oracle没有特定的UPSERT语句,最好的方法是什么?
LEFT| RIGHT| FULL)(INNER| OUTER)连接?merge?join?concat?update?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
Subversion,Git,Mercurial和其他人支持三方合并(结合我的,他们的和"基础"修订版)并支持解决冲突的图形工具.
你用什么工具?Windows,Mac OS X,Linux,免费或商业,您可以命名.
以下是我用过或听过的一些内容,只是为了开始对话:
我有一个带有2个分支的git存储库:master和test.
主分支和测试分支之间存在差异.
两个分支都承诺所有更改.
如果我做:
git checkout master
git diff test
出现一个充满变化的屏幕,显示出差异.我想合并测试分支中的更改,所以:
git merge test
但得到消息"已经是最新的"
但是,检查每个不同分支下的文件清楚地显示了差异.
这里有什么问题,如何解决?
我真的不能没有想过的时候,我会用git merge,而不是git rebase和不希望有一个承诺现身.有没有办法配置git默认快速关闭?事实上,有一个--ff选项似乎意味着有一种方法,但我似乎无法在文档中找到它.
在我的分支上,我在.gitignore中有一些文件
在不同的分支上,这些文件不是.
我想将不同的分支合并到我的,我不在乎这些文件是否不再被忽略.
不幸的是我明白了:
合并将覆盖以下未跟踪的工作树文件
如何修改我的pull命令来覆盖这些文件,而不必自己查找,移动或删除这些文件?
我已经完成了一个功能分支feature-x.我想将结果合并回default分支并关闭feature-x,以便在输出中删除它hg branches.
我想出了以下场景,但它有一些问题:
$ hg up default
$ hg merge feature-x
$ hg ci -m merge
$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch
Run Code Online (Sandbox Code Playgroud)
所以feature-x分支(更改40- 41)已关闭,但有一个新头,即结束分支变更集44,hg heads每次都会列出:
$ hg log ...
o 44 Closed branch feature-x
|
| @ 43 merge
|/|
| o 42 Changeset C
| |
o | 41 Changeset 2
| |
o …Run Code Online (Sandbox Code Playgroud) 我有一个我要合并的许多data.frames的列表.这里的问题是每个data.frame在行数和列数方面都不同,但它们都共享关键变量(我已经调用过"var1","var2"在下面的代码中).如果data.frames在列方面是相同的,我只能rbind,plyr的rbind.fill可以完成这项工作,但这些数据并非如此.
因为该merge命令仅适用于2个data.frames,所以我转向Internet寻求创意.我从这里得到了这个,它在R 2.7.2中完美运行,这是我当时所拥有的:
merge.rec <- function(.list, ...){
if(length(.list)==1) return(.list[[1]])
Recall(c(list(merge(.list[[1]], .list[[2]], ...)), .list[-(1:2)]), ...)
}
Run Code Online (Sandbox Code Playgroud)
我会像这样调用函数:
df <- merge.rec(my.list, by.x = c("var1", "var2"),
by.y = c("var1", "var2"), all = T, suffixes=c("", ""))
Run Code Online (Sandbox Code Playgroud)
但是在2.7.2之后的任何R版本中,包括2.11和2.12,此代码失败并出现以下错误:
Error in match.names(clabs, names(xi)) :
names do not match previous names
Run Code Online (Sandbox Code Playgroud)
(很明显,我在其他地方看到了其他对此错误的引用而没有解决方案).
有什么方法可以解决这个问题吗?
我有一些本地文件,我从远程分支拉,有冲突.我知道我想保留本地更改并忽略导致冲突的远程更改.是否有一个命令可以用来实际上说"将所有冲突标记为已解决,使用本地"?
如何在熊猫中做到这一点:
我extract_text_features在单个文本列上有一个函数,返回多个输出列.具体来说,该函数返回6个值.
该函数有效,但似乎没有任何正确的返回类型(pandas DataFrame/numpy数组/ Python列表),以便输出可以正确分配 df.ix[: ,10:16] = df.textcol.map(extract_text_features)
所以我认为我需要回到迭代df.iterrows(),按照这个?
更新:迭代df.iterrows()速度至少慢20倍,所以我投降并将函数拆分为六个不同的.map(lambda ...)调用.