Есть ли способ создать следующий фрейм данных в python? - PullRequest
0 голосов
/ 20 января 2020

Я новичок в python, и мне нужно сделать следующее. Не уверен, если это называется «присоединиться». У меня есть 2 фрейма данных:

df1 = pd.DataFrame({'column_A': ['A0', 'A1', 'A2', 'A3'],
'column_B': ['B0', 'B0', 'B1', 'B1']}])
df2 = pd.DataFrame({'column_C': ['1', '2', '3'],
'column_D': ['0', '3.5', '7.5'],
'column_E': ['3.6', '7.6', '11'])

, и мне нужно создать следующий фрейм данных: df_final:

column_A column_B column_C column_D column_E
A0  B0  3   7.6 11.0
A1  B0  3   7.6 11.0
A2  B1  3   7.6 11.0
A3  B1  3   7.6 11.0
A0  B0  2   3.6 7.5
A1  B0  2   3.6 7.5
A2  B1  2   3.6 7.5
A3  B1  2   3.6 7.5
A0  B0  1   0   3.5
A1  B0  1   0   3.5
A2  B1  1   0   3.5
A3  B1  1   0   3.5

, когда я использую concat, не дает мне точно такой же результат. Есть идеи?

1 Ответ

1 голос
/ 20 января 2020

Похоже, вы хотите декартово произведение обоих информационных кадров. Одним из способов является использование merge для создания вспомогательного столбца, в который необходимо объединить:

df1.assign(key=0).merge(df2.assign(key=0), on='key').drop(['key'], axis=1)

     column_A column_B column_C column_D column_E
0        A0       B0        1        0      3.6
1        A0       B0        2      3.5      7.6
2        A0       B0        3      7.5       11
3        A1       B0        1        0      3.6
4        A1       B0        2      3.5      7.6
5        A1       B0        3      7.5       11
6        A2       B1        1        0      3.6
7        A2       B1        2      3.5      7.6
8        A2       B1        3      7.5       11
9        A3       B1        1        0      3.6
10       A3       B1        2      3.5      7.6
11       A3       B1        3      7.5       11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...