как я могу добавить два фрейма данных 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
Используйте 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
параметров, а затем сгладить его по MultiIndex
списка с помощью f-string
- вывод немного отличается:
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
df = pd.concat([df1.reset_index(drop=True), df2.add_suffix('_2').reset_index(drop=True)], axis=1)