Переплетение строк из 2 dfs panda - PullRequest
1 голос
/ 24 февраля 2020

У меня есть 2 dfs, я хочу сплести строки из этих 2 dfs, чтобы построить 1 df.

import pandas as pd
df1 = pd.DataFrame({'SONY': [1,3,5,7,9],}, index=['a','b','c','d','e'])
df1 = pd.DataFrame({'SONY': [2,4,6,8,10],}, index=['a','b','c','d','e'])

Ожидаемый результат

   SONY
a   1
a   2
b   3
b   4
c   5
c   6
d   7
d   8
e   9
e   10

Моя неудачная попытка, я думал зацикливание на dfs и извлечение строк и помещение их в список, а затем построение df из него.

dfs=[]
numofrows = len(df.index)
for x in range(0, numofrows):
    dfs.append(pd.concat([df1.iloc[x], df2.iloc[x]], ignore_index=True))

Почему я так делаю: я пытаюсь воспроизвести df за графиком, и вот как это выглядит.

1 Ответ

2 голосов
/ 24 февраля 2020

Вы должны сделать так, чтобы индексы не совпадали, затем используйте zip, numpy.hstack, pandas.concat и DataFrame.reindex :

import numpy as np

# Change indices
df1.index+='1'
df2.index+='2'

order = np.hstack(list(zip(df1.index, df2.index)))
df = pd.concat([df1, df2]).reindex(order)
print(df)

[out]

    SONY
a1     1
a2     2
b1     3
b2     4
c1     5
c2     6
d1     7
d2     8
e1     9
e2    10
...