Объединение данных в цикле

1

Я борюсь с чем-то простым, и это сводит меня с ума.

Почему конкатенация, как показано ниже, не заменяет df1 на df1 + дополнительный столбец?

df1 = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6]})
df2 = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6]})
df3 = pd.DataFrame({'C':[999, 999, 999]})

for table in [df1, df2]:
    table = pd.concat((table, df3), axis=1)
df1

Изображение 174551

Спасибо!

[edit] Мне нужно получить отдельно для df1 и df2:

Изображение 174551

Теги:
pandas
dataframe
concatenation

1 ответ

1
Лучший ответ

У вас есть два DataFrames. К этим переменным относятся два имени переменной "df1" и "df2". Теперь вы перебираете эти dataFrames в цикле под псевдонимом "table". Внутри цикла "таблица" переназначается на результат concat. Поскольку concat не находится на месте, ни один из исходных DataFrames не изменяется.

Мой совет - поддерживать список DataFrames.

df_list = [df1, df2]

Теперь измените список:

for i, df in enumerate(df_list):
    df_list[i] = pd.concat([df, df3], axis=1)

df_list будет отражать обновление, поскольку теперь он будет содержать вновь созданные concat выходы.

df1, df2 = df_list

print(df1)
   A  B    C
0  1  4  999
1  2  5  999
2  3  6  999

print(df2)
   A  B    C
0  1  4  999
1  2  5  999
2  3  6  999
  • 0
    Теперь я понимаю. Я ошибочно полагал, что даже если «таблица» используется в качестве псевдонима, результат concat будет назначен одному из фреймов данных, который смещен в конкретном цикле. Я на самом деле удивлен, что псевдоним не может использоваться в качестве присваивания переменной, но я все еще учусь, так что это ожидается :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню