我有一个带有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
中的列在第一个列中还不存在。我认为merge
或join
可能是正确的,但它们需要共享索引。 concat
看起来是最正确的,但是我不知道如何在第一个数据帧中指定which
行应该得到我的第二个数据帧。
我想要的输出是:
city animal zoo apple banana ... grape
boston pig bns 0 5 10 ... 37
new york tiger nycz NaN NaN NaN ... NaN
[...]
答案 0 :(得分:1)
首先在df1中创建列,然后通过.values
和loc
分配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