Объединить датафреймы из двух функций
Есть две функции, каждая из которых принимает, соответственно, данные data_1 и data_2 (это могут быть и числа, и текст), обрабатывает их и формирует датафрейм df_1 и df_2. Кодом
def func_1(data_1):
...
print(df_1)
return (df_1)
def func_2(data_2):
...
print(df_2)
return (df_2)
new_df = pd.concat([df_1, df_2])
print(new_df)
я пытаюсь объединять полученные датафреймы в один (по идее столбцы одного должны складываться со столбцами другого). Данное объединение происходит, но только один раз только один раз, а нужно, чтобы они происходило постоянно при каждом новом попадании data_1 и data_2 в соответствующие функции.
Ответы (1 шт):
Чтобы какой-то фрейм накапливал информацию, например, new_df, нужно его включать в список (первый аргумент метода pd.concat()). Также разумно воспользоваться возвращаемыми из функций результатами, т.е. включить их в тот же список.
Обращаю внимание, что метод pd.concat() - медленный. Лучше сначала сформировать полный массив данных, например, в списке или словаре, и потом уже создать фрейм.
def func_1(data_1):
df_1 = pd.DataFrame([[data_1] * 3] * 2, columns=['Col1', 'Col3', 'Col3'])
return df_1
def func_2(data_2):
df_2 = pd.DataFrame([[data_2 + 100] * 3] * 2, columns=['Col1', 'Col3', 'Col3'])
return df_2
new_df = pd.DataFrame()
for i in range(5):
new_df = pd.concat([new_df, func_1(i), func_2(i)], ignore_index=True)
print(new_df)
Col1 Col3 Col3
0 0 0 0
1 0 0 0
2 100 100 100
3 100 100 100
4 1 1 1
5 1 1 1
6 101 101 101
7 101 101 101
8 2 2 2
9 2 2 2
10 102 102 102
11 102 102 102
12 3 3 3
13 3 3 3
14 103 103 103
15 103 103 103
16 4 4 4
17 4 4 4
18 104 104 104
19 104 104 104