3
���h5O � @ s6 d dl mZ d dlZd dlmZ d dlZd dlmZm Z
d dlmZ d dl
mZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d d lmZ d dljjZ d d
l!m"Z"m#Z# d dl$m%Z% d dl&m'Z' e(e)e'd
�dd�Z*dd� Z+G dd� d�Z,dd� Z-dd� Z.ee, e)d�dd�Z/e)d�dd�Z0dd� Z1d d!� Z2dS )"� )�defaultdictN)�List)�NaT� internals)�cache_readonly)�
maybe_promote) �
_get_dtype�is_categorical_dtype�is_datetime64_dtype�is_datetime64tz_dtype�is_extension_array_dtype�is_float_dtype�is_numeric_dtype� is_sparse�is_timedelta64_dtype)�
concat_compat)�isna)�
DatetimeArray�ExtensionArray)�
make_block)�BlockManager)�concat_axis�copy�returnc
C s dd� | D �}t ||�}g }x�|D ]�\}}t|�dkrx|d j rx|d j} | j}
|r`|
j� }
n|
j� }
| j|
|d�} n�t|�r�|d j}dd� |D �}|j s�t
||jd d�}
n"t
|�}
t|
t
�s�|
jdt|
��}
t|
||jd�} ntt|||d �|d�} |j| � q"W t||�S )
z�
Concatenate block managers into one.
Parameters
----------
mgrs_indexers : list of (BlockManager, {axis: indexer,...}) tuples
axes : list of Index
concat_axis : int
copy : bool
Returns
-------
BlockManager
c S s g | ]\}}t ||��qS � )�_get_mgr_concatenation_plan)�.0�mgr�indexersr r �>/tmp/pip-build-5_djhm0z/pandas/pandas/core/internals/concat.py�
<listcomp>1 s z.concatenate_block_managers.<locals>.<listcomp>� r )� placementc S s g | ]}|j j�qS r )�block�values)r �jur r r r B s )�axis)r" |