Конкатенация Пандас DataFrames Двойные Строки - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь concat () два DataFrames в пандах.Один из фреймов данных - это всего лишь несколько столбцов, которые я взял из другого фрейма данных и преобразовал, поэтому я ни к чему не прибегаю.Но когда я пытаюсь объединить их, я получаю сообщение о том, что их нельзя объединять вместе, и поэтому они объединяются почти по диагонали с удвоением числа строк (так как у каждого одинаковые строки) и увеличением числа столбцов на столбцы в одномплюс другое.

В идеале я хотел бы, чтобы количество строк оставалось неизменным, а количество столбцов было столбцами в одном, плюс столбцы в другом.Ниже мой код:

## In the below code I create new names for the scaled fields by adding SC_ to 
## their existing names
SC_ExplanVars = []

for var in explan_vars:
    sc_var= "SC_" + var
    SC_ExplanVars.append(sc_var)

## Scale the columns from my dataframe that will be used as explanatory 
## variables
X_Scale = preprocessing.scale(data[ExplanVars])

## Put my newly scaled explanatory variables into a DataFrame with same headers
## but with SC_ infont
X_Scale = pd.DataFrame(X_Scale, columns = SC_ExplanVars)

## Concatenate scaled variables onto original dataset
datat = pd.concat([data, X_Scale], axis=1)

Я получаю предупреждение:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\api.py:77: RuntimeWarning: '<' not supported between instances of 'str' and 'int', sort order is undefined for incomparable objects
  result = result.union(other)

РЕДАКТИРОВАТЬ

Ниже приведена таблица того, что я описывал.Это только первые 10 строк, и я изменил его только на один столбец, и все еще, кажется, вызывает ту же проблему

Data=
    Col1
    297
    297
    297
    297
    275
    275
    275
    400
    400
    400

X_Scale = 
SC_Col1
-0.4644471998668502
-0.4644471998668502
-0.4644471998668502
-0.4644471998668502
-0.8849343767010354
-0.8849343767010354
-0.8849343767010354
1.5041973098568349
1.5041973098568349
1.5041973098568349

После объединения

datat = 
Col1    SC_Col1
297.0   NaN
297.0   NaN
297.0   NaN
297.0   NaN
275.0   NaN
275.0   NaN
275.0   NaN
400.0   NaN
400.0   NaN
400.0   NaN
NaN -0.4644471998668502
NaN -0.4644471998668502
NaN -0.4644471998668502
NaN -0.4644471998668502
NaN -0.8849343767010354
NaN -0.8849343767010354
NaN -0.8849343767010354
NaN 1.5041973098568349
NaN 1.5041973098568349
NaN 1.5041973098568349

1 Ответ

1 голос
/ 02 июня 2019

может быть, есть другая метка индекса, попробуйте использовать reset_index () в каждом кадре данных перед объединением:

Пример У меня есть эти 2 кадра данных с другим именем индекса и попробуйте concat их:

d1={'Col1':[297,297,297,297,275,275,275,400,400,400]}
d2={'SC_Col1': [-0.4644471998668502,-0.4644471998668502,-0.4644471998668502,-0.4644471998668502,-0.8849343767010354,-0.8849343767010354,-0.8849343767010354,1.5041973098568349,1.5041973098568349,1.5041973098568349]}

df1=pd.DataFrame(d1, index=[10,11,12,13,14,15,16,17,18,19])
df2=pd.DataFrame(d2)
print(pd.concat([df1, df2], axis=1))

Выход:

     Col1   SC_Col1
0     NaN -0.464447
1     NaN -0.464447
2     NaN -0.464447
3     NaN -0.464447
4     NaN -0.884934
5     NaN -0.884934
6     NaN -0.884934
7     NaN  1.504197
8     NaN  1.504197
9     NaN  1.504197
10  297.0       NaN
11  297.0       NaN
12  297.0       NaN
13  297.0       NaN
14  275.0       NaN
15  275.0       NaN
16  275.0       NaN
17  400.0       NaN
18  400.0       NaN
19  400.0       NaN

После использования reset_index() с параметром drop=True перед операцией concat() кадр данных будет выглядеть следующим образом:

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

Выход:

   Col1   SC_Col1
0   297 -0.464447
1   297 -0.464447
2   297 -0.464447
3   297 -0.464447
4   275 -0.884934
5   275 -0.884934
6   275 -0.884934
7   400  1.504197
8   400  1.504197
9   400  1.504197

Надеюсь, это поможет вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...