конкатинирование двух панд данных не работает - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть 2 кадра данных размером 31789x7 и 31789x3.Я хочу создать фрейм данных 31789x10.Это работает в принципе с

df3 = pd.concat([df1, df2], axis=1)

для искусственных данных за полсекунды.Но по моим данным конкат не заканчивается в течение 10 мин.Если я делаю это «вручную» с помощью:

for c in df2:
    df1[c] = df2[c]

, это приводит к сбою:

ValueError: cannot reindex from a duplicate axis

В чем здесь проблема?(ignore_index = True не помогает)

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Одна идея - создать по умолчанию RangeIndex first:

df3 = pd.concat([df1.reset_index(drop=True), 
                 df2.reset_index(drop=True)], axis=1)

df1.reset_index(drop=True, inplace=True)
df2.reset_index(drop=True, inplace=True)

for c in df2:
    df1[c] = df2[c]

Для всех типов столбцов (например, integer s) используйте numpy.hstack:

c = df1.columns.append(df2.columns)
df = pd.DataFrame(np.hstack((df1.values, df2.values)), columns=c)
0 голосов
/ 25 апреля 2018

Вы можете попробовать с reindex и назначить значение только

df1=df1.reindex(columns=list(df2)+list(df1))
df1[list(df2)]=df2.values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...