Разделить и объединить вложенный DataFrame в Python - PullRequest
0 голосов
/ 06 февраля 2020

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

sample

Я хочу иметь фрейм данных с 3 столбцами, содержащими «Date_Region», «transformed_weight» и «Barcode», который будет реплицировать каждую строку "Date_Region", умноженную на длину своего кадра данных "Weight-Barcode". Окончательный кадр данных должен выглядеть следующим образом:

final

1 Ответ

1 голос
/ 06 февраля 2020

Это будет делать:

pd.concat(
    iter(final_df.apply(
        lambda row: row['Weights-Barcode'].assign(
            Date_Region=row['Date_Region'],
        ),
        axis=1,
    )),
    ignore_index=True,
)[['Date_Region', 'transformed_weight', 'Barcode']]

Изнутри:

  • final_df.apply(..., axis=1) вызовет лямбда-функцию в каждом ряду.
  • Лямбда Функция использует assign() для возврата вложенного DataFrame из этой строки с добавлением столбца Date_Region со значением извне.
  • Вызов iter(...) для полученного ряда приводит к повторяемости DataFrames уже включая добавленный столбец.
  • Наконец, используя pd.concat(...) для этой итерации, чтобы объединить их все вместе. Я использую ignore_index=True здесь, чтобы просто переиндексировать все заново (мне кажется, ваш индекс не имеет смысла, а игнорирование их означает, что вы получите дубликаты).
  • Наконец, я ' m переупорядочиваем столбцы, поэтому добавленный столбец Date_Region становится самым левым.
...