LEFT| RIGHT| FULL)(INNER| OUTER)连接?merge?join?concat?update?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
pd.concat?levels?keys?熊猫的concat功能是合并公用事业的瑞士军刀.它有用的各种情况很多.现有文档遗漏了一些可选参数的一些细节.其中包括levels和keys论点.我开始弄清楚这些论点的作用.
我将提出一个问题,它将成为许多方面的门户pd.concat.
考虑数据帧d1,d2以及d3:
import pandas as pd
d1 = pd.DataFrame(dict(A=.1, B=.2, C=.3), [2, 3])
d2 = pd.DataFrame(dict(B=.4, C=.5, D=.6), [1, 2])
d3 = pd.DataFrame(dict(A=.7, B=.8, D=.9), [1, 3])
Run Code Online (Sandbox Code Playgroud)
如果我将这些连接在一起
pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'])
Run Code Online (Sandbox Code Playgroud)
我得到了一个pandas.MultiIndexfor my columns对象的预期结果:
A B C D
d1 2 0.1 0.2 0.3 NaN
3 0.1 …Run Code Online (Sandbox Code Playgroud) Pandas非常擅长处理数据分析中的各种用例.探索文档以确定执行特定任务的最佳方式可能有点令人生畏.
我目前正在努力了解pd.DataFrame.merge()和之间的本质区别pd.concat().到目前为止,这是我能说清楚的:
.merge()只能使用列(加上行索引),它在语义上适用于数据库样式的操作..concat()可以与任一轴一起使用,仅使用索引,并提供添加分层索引的选项.
顺便提一下,这允许以下冗余:两者都可以使用行索引组合两个数据帧.
至于pd.DataFrame.join()它似乎只是提供了一小部分用例的简写.merge().
有人可以评论我此时的理解是否完整和准确吗?
谢谢.