Как я могу объединить серию с датафреймом - PullRequest
0 голосов
/ 15 октября 2018

У меня есть две серии и один фрейм данных, и я хочу объединить их все вместе.

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])

Я пробовал и merge, и concat, и он всегда выдавал ошибку.Индекс является проблемой здесь.Я просто хочу объединить их, и если один столбец не имеет такой же индекс, как другой, он должен заполнить его 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 голосов
/ 15 октября 2018

Нужно с помощью cumcount создать справку для join

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...