如何将系列与数据框结合

时间:2018-10-15 18:44:26

标签: python pandas

我有两个系列和一个数据框,我想将它们全部合并在一起。

cola = pd.Series(['test','test1','test2','test3'], index=[0,0,1,1])

colb = pd.Series(['k','k1','k2','k3'], index=[0,1,1,2])

df = pd.DataFrame({'col1': ['z','z1','z2','z3']}, index=[0,0,0,1])

我同时尝试了mergeconcat,但始终会出错。索引是这里的问题。我只想合并它们,如果一列与另一列没有相同的索引,则应该用NaN填充它。有可能吗?

这是我想要的输出:

     col1  colb  cola
0     z     k    test
0    z1   NaN   test1
0    z2   NaN     NaN 
1    z3    k1   test2
1   NaN    k2   test3
2   NaN    k3     NaN

有帮助吗?谢谢

1 个答案:

答案 0 :(得分:2)

需要使用cumcountjoin创建一个帮助键

df.set_index(df.groupby(df.index).cumcount(),append=True,inplace=True)
cola=cola.to_frame('cola').set_index(cola.groupby(cola.index).cumcount(),append=True)
colb=colb.to_frame('colb').set_index(colb.groupby(colb.index).cumcount(),append=True)
yourdf=df.join(cola,how='outer').join(colb,how='outer')
yourdf
Out[161]: 
    col1   cola colb
0 0    z   test    k
  1   z1  test1  NaN
  2   z2    NaN  NaN
1 0   z3  test2   k1
  1  NaN  test3   k2
2 0  NaN    NaN   k3