объединить два кадра данных с новым номером индекса - PullRequest
0 голосов
/ 16 октября 2018

как я могу добавить два кадра данных pandas вместе с другим и добавить изменение индекса, как показано в следующем примере.df1:

     A    B    C    D
1    1    2    3    2
2    2    2    3    1
3    2    3    2    1

df2:

     A    B    C    D
1    1    2    3    2
2    4    2    19   1
3    2    64   2    1

результат должен быть

df_sum:

     A    B    C    D    A_2    B_2    C_2    D_2
1    1    2    3    2    1       2       3     2
2    4    2    19   1    4       2       19    1
2    2    2    3    1    2      64       2     1

с последующим добавлением 4 столбцов с помощью d_A= A_2-A;d_B = B_2-B;d_C = C_2-C;d_D = D_2-D:

     A    B    C    D    A_2    B_2    C_2    D_2   d_A   d_B   ..
1    1    2    3    2    1       2       3     2     0     0    ..
2    4    2    19   1    4       2       19    1     0     0    ..
2    2    2    3    1    2      64       2     1     0     62   ..

спасибо, R

1 Ответ

0 голосов
/ 16 октября 2018

Используйте concat с DataFrame.add_suffix:

df = pd.concat([df1, df2.add_suffix('_2')], axis=1)
#alternative solution
#df = df1.join(df2.add_suffix('_2'))
print (df)
   A  B  C  D  A_2  B_2  C_2  D_2
1  1  2  3  2    1    2    3    2
2  2  2  3  1    4    2   19    1
3  2  3  2  1    2   64    2    1

Другая идея - создать MultiIndex с помощью параметра keys, а затем сгладить его с помощьюпонимание списка с помощью f-string s - вывод немного другой:

df = pd.concat([df1, df2], axis=1, keys=('1','2'))
df.columns = [f'{j}_{i}' for i, j in df.columns]
print (df)
   A_1  B_1  C_1  D_1  A_2  B_2  C_2  D_2
1    1    2    3    2    1    2    3    2
2    2    2    3    1    4    2   19    1
3    2    3    2    1    2   64    2    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...