Конкат данных не работает - PullRequest
0 голосов
/ 05 июля 2018

У меня есть два фрейма данных df1 и df2. у обоих одинаковое количество строк, но разные столбцы. Я хочу объединить все столбцы df1 и 2-й и 3-й столбцы df2.

У df1 есть 119 столбцов, а у df2 есть 3, из которых я хочу 2-й и 3-й

Код, который я использую:

data_train_test = pd.concat([df1,df2.iloc[:, 
[2,3]]],axis=1,ignore_index=False)

Я получаю ошибку

ValueError: Shape of passed values is (121, 39880), indices imply (121, 28898)

Мой анализ:

39880 - 28898 = 10982

df1 - это фрейм данных TFID, созданный из двух других фреймов данных со строками 17916 + 10982 = 28898.

как я сделал df2

frames = [data, prediction_data]
df2 = pd.concat(frames)

Я не могу найти точную причину этой проблемы. Может кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Я не уверен, что правильно понял ваш вопрос, но думаю, что вы хотите сделать:

data_train_test = pd.concat([df1,df2[[1,2]]])

.iloc[] используется для выбора строки (i-й строки в индексе вашего информационного кадра). Так что тебе это не нужно.

0 голосов
/ 05 июля 2018
import pandas as pd
df1 = pd.DataFrame(data={'a':[0]})
df2 = pd.DataFrame(data={'b1':[1], 'b2':[2], 'b3':[3]})

data_train_test = pd.concat([df1,df2[df2.columns[1:3]]], axis=1)
# or
data_train_test = pd.concat([df1,df2.loc[:,df2.columns[1:3]]], axis=1)
0 голосов
/ 05 июля 2018

Я думаю, что решил эту проблему, сбросив индекс при создании df2.

frames = [data, prediction_data]
df2 = pd.concat(frames).reset_index()
...