Я пытаюсь объединить три панды DataFrames в Python.Ниже приведены три DataFrames, которые я пытаюсь объединить, а также мой желаемый вывод (где NaN равен нулю).Я знаю, что объединение двух таблиц с левым слиянием не сработало.Какова правильная последовательность двух слияний для достижения желаемого результата?(Не должно быть одной строки кода, если это невозможно). Спасибо!
df1
+--------+
| x |
+--------+
| 1 |
| 2 |
| 3 |
+--------+
df2
+--------+---+
| x | b |
+--------+---+
| 1 | A |
| 1 | B |
| 1 | C |
| 2 | D |
| 2 | E |
| 2 | F |
| 3 | G |
+--------+---+
df3
+--------+---+
| x | c |
+--------+---+
| 1 | L |
| 1 | M |
| 2 | N |
| 3 | O |
| 3 | P |
| 3 | Q |
+--------+---+
df_result
+----------------+-----+-----+
| x | b | c |
+----------------+-----+-----+
| 1 | A | NaN |
| 1 | B | NaN |
| 1 | C | NaN |
| 1 | NaN | L |
| 1 | NaN | M |
| 2 | D | NaN |
| 2 | E | NaN |
| 2 | F | NaN |
| 2 | NaN | N |
| 3 | G | NaN |
| 3 | NaN | O |
| 3 | NaN | P |
| 3 | NaN | Q |
+----------------+-----+-----+
Следующие попытки не приводят к кадру данных df_result, как показано выше:
attempt1:
df_step1 = df1.merge(df2, on='x', how='left')
df_result = df_step1.merge(df3, on='x', how='left')
df_result
Я пробовал вышеупомянутое с различной комбинацией левого, правого, внешнего и внутреннего объединений / слияний
attempt2:
df_result = pd.concat([table1, table2, table3], axis=1, sort='false')
df_result
Это также не приводит к желаемому df_result DataFrame.
Возможно, мне нуженкомбинация конкат и слияние?Или, поскольку это новая строка для каждой записи, я мог бы просто написать цикл for, который вводит информацию для каждой из этих записей в новую серию в df.Примерно так:
for i in range(len(df1.index)):
for j in range (len(df2.index)):
df_result = df_result.append(df2[j])
for k in range (len(df3.index)):
df_result = df_result.append(df3[k])