Конкат Pandas не работает должным образом, когда один DF создается с использованием цикла for - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь объединить два фрейма данных Pandas, где один из них создается с помощью цикла for.По какой-то причине pd.concat не будет объединяться, как ожидается, по строкам.

Приведенный ниже код иллюстрирует проблему:

datasort = [143.477514,112.951071,869.627662,193.471612,140.428981,301.053040,190.684404,180.142223,127.569191,404.871493]

sample_1 = pd.DataFrame(np.random.choice(datasort,(8,10)))
samples_2 = pd.DataFrame()

for t in np.arange(10):

    samples_2[str(t)] = np.random.choice(datasort,2)

samples_3=pd.concat([samples_2,sample_1],ignore_index=True)

Код создает matix 10x20 с большим количеством NaNи не 10х10, как я ожидал.

Может кто-нибудь указать, чего мне явно не хватает?

1 Ответ

0 голосов
/ 13 декабря 2018

Проблема заключается в том, что вы приводите столбцы к строкам, так как DataFrame не может быть выровнен, потому что разные имена столбцов:

for t in np.arange(10):
    #casting to string 
    samples_2[str(t)] = np.random.choice(datasort,2)

print (sample_1.columns)
RangeIndex(start=0, stop=10, step=1)
print (samples_2.columns)
Index(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='object')

Решение:

for t in np.arange(10):
    samples_2[t] = np.random.choice(datasort,2)
...