连接,pandas和join_axes

时间:2014-12-09 23:54:46

标签: python pandas

我一直在网上搜索这个例子,但没找到任何东西。

df1, df2, .. dfn成为pandas数据帧,并进行缩进索引。

运行命令时发生了什么:

pandas.concat([df1,..,dfn],axis=1,join_axes=[df1.index])

它不会给我一个错误并提供数据帧。我已经粘贴了我在文档中找到的与此相关的所有内容。当指数不匹配时会发生什么?大熊猫如何知道使用其他数据帧的索引,我想我可能必须放置其他n-1 pandas数据帧的所有索引。

任何提示?

join_axes:索引对象列表 用于其他n - 1轴的特定索引,而不是执行内部/外部设置逻辑

3 个答案:

答案 0 :(得分:2)

n

的含义

首先,n中的n-1是指每个数据框中维度的数量,而不是数据框的数量。您可以从the source code at lines 938ff

中看到
def _get_new_axes(self):
    ndim = self._get_result_dim()
    new_axes = [None] * ndim

    if self.join_axes is None:
        for i in range(ndim):
            if i == self.axis:
                continue
            new_axes[i] = self._get_comb_axis(i)
    else:
        if len(self.join_axes) != ndim - 1:
            raise AssertionError("length of join_axes must not be "
                                 "equal to {0}".format(ndim - 1))

(因此,它真的不应该在documentation中读取n-1。我想这个公式是基于常见用法示例,其中使用join_axes传递的索引是其中一个数据框。但是,传递的索引也可以是新的合成索引。)

使用join_axes

实际使用join_axes替换要与另一个(或实际每个维度一个)连接的数据帧的索引。

在此过程中,每个数据框中的值只是分配到新索引,忽略它包含的索引。此外,如果其中一个数据帧比相应的索引更长(任何维度),它将被简单地截断。

将时间序列合并为一个数据框

您可能尝试实现的是将一堆Series组合成DataFrame并保留其原始(部分)不匹配的索引。

pandas.concat([df1,..,dfn], axis=1, join='outer')

这样做(join=outer)。

(但是,当您想要绘制结果数据帧时,可能需要找到一种解决方法,因为all columns are interrupted by NaNs。)

答案 1 :(得分:0)

制作join_axes=[df1.columns]

pandas.concat([df1,..,dfn],axis=1,join_axes=[df1.columns])

答案 2 :(得分:0)

联接轴已弃用。现在支持的方式

pandas.concat([df1,..,dfn],axis=1).reindex(df1.columns)