假设我有两个这样的DataFrame:
left = pd.DataFrame({'key1': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key2': ['foo', 'bar'], 'rval': [4, 5]})
我想合并它们,所以我尝试这样的事情:
pd.merge(left, right, left_on='key1', right_on='key2')
我很开心
key1 lval key2 rval
0 foo 1 foo 4
1 bar 2 bar 5
但是我正在尝试使用join方法,我被认为这是非常相似的。
left.join(right, on=['key1', 'key2'])
我得到这个:
//anaconda/lib/python2.7/site-packages/pandas/tools/merge.pyc in _validate_specification(self)
406 if self.right_index:
407 if not ((len(self.left_on) == self.right.index.nlevels)):
--> 408 raise AssertionError()
409 self.right_on = [None] * n
410 elif self.right_on is not None:
AssertionError:
我想念什么?
我总是join
在索引上使用:
import pandas as pd
left = pd.DataFrame({'key': ['foo', 'bar'], 'val': [1, 2]}).set_index('key')
right = pd.DataFrame({'key': ['foo', 'bar'], 'val': [4, 5]}).set_index('key')
left.join(right, lsuffix='_l', rsuffix='_r')
val_l val_r
key
foo 1 4
bar 2 5
通过merge
在以下各列上使用,可以具有相同的功能:
left = pd.DataFrame({'key': ['foo', 'bar'], 'val': [1, 2]})
right = pd.DataFrame({'key': ['foo', 'bar'], 'val': [4, 5]})
left.merge(right, on=('key'), suffixes=('_l', '_r'))
key val_l val_r
0 foo 1 4
1 bar 2 5
这两个子句的主要区别是参数传递。对于< code>IFNULL是两个参数,对于< code>COALESCE是多个参数。所以除此之外,这两者之间还有其他区别吗? 它在MS SQL中有何不同?
我理解(用于容器)和(用于图像)之间的区别。但最终,通过save或export生成的tarball应该用作图像。 那么为什么有两个命令来从tarball生成图像呢?
什么是区别之间的和?
问题内容: 我不知道熊猫和功能之间的区别。 以以下示例为例:我加载数据集,执行,定义一个简单函数,然后输入user或。 如您所见,在使用和之后,函数中的print语句得到相同的输出。另一方面,结果是不同的。这是为什么? 使用: 使用 问题答案: 将功能应用于每个组(您的)。您的函数返回1,因此对于3个组,您最终都将获得1值。 汇总 每个 组的 每个列(功能) ,因此最终每个组的每个列都有一个值。
问题内容: 他们似乎都 非常 相似,我很好奇哪个软件包对财务数据分析更有利。 问题答案: 熊猫提供了基于NumPy构建的高级数据处理工具。NumPy本身是一个相当底层的工具,类似于MATLAB。另一方面,pandas提供了丰富的时间序列功能,数据对齐,对NA友好的统计信息,groupby,合并和联接方法以及许多其他便利。近年来,它在金融应用中变得非常流行。我的下一本书将专门讨论使用熊猫进行财务数据
为什么并行流使用合并器类,而顺序流将使用累加器?为什么并行流不使用累加器? 以下是上述代码的输出: 那么,为什么顺序流使用累加器,并行流使用组合器?并行流不能使用累加器吗?