熊猫concat数据框指定了索引位置

时间:2018-06-25 22:18:20

标签: python pandas

我有一个带有multindex的数据框,和一个行向量,我想将其值加入数据框。这些列事先不在第一个数据帧上。例如:

# First dataframe, lots of rows, index on (city, animal, zoo)
city       animal   zoo
boston     pig      bns
new york   tiger    nycz
[...]

# Second dataframe, one row, non-label index 
    apple  banana   ...  grape
0   5      10       ...  37

知道我要添加第二个数据帧的索引(而不是行号):index = (boston, big, bns)。所以我尝试做:

first_dataframe[index, second_dataframe.columns] = second_dataframe

但是我得到了KeyError,因为second_dataframe中的列在第一个列中还不存在。我认为mergejoin可能是正确的,但它们需要共享索引。 concat看起来是最正确的,但是我不知道如何在第一个数据帧中指定which行应该得到我的第二个数据帧。

我想要的输出是:

city       animal   zoo   apple  banana   ...  grape
boston     pig      bns   0   5      10   ...  37
new york   tiger    nycz  NaN NaN    NaN  ...  NaN
[...]     

1 个答案:

答案 0 :(得分:1)

首先在df1中创建列,然后通过.valuesloc分配df2值

index = ('boston', 'pig', 'bns')
df1=df1.assign(**dict(zip(df2.columns,[np.nan]*df2.shape[1])))
df1.loc[index,df2.columns]=df2.values
df1
                     apple  banana  grape
city    animal zoo                       
boston  pig    bns     5.0    10.0   37.0
newyork tiger  nycz    NaN     NaN    NaN
LOL     L      L       NaN     NaN    NaN
LOL1    L1     L1      NaN     NaN    NaN