【问题标题】:Split and merge nested DataFrame in Python在 Python 中拆分和合并嵌套的 DataFrame
【发布时间】:2020-02-06 07:01:14
【问题描述】:

我有一个数据框,它有两列。其中一列也是另一个数据框。如下所示:

我想要一个包含 3 列的数据框,其中包含“Date_Region”、“transformed_weight”和“Barcode”,它将复制每个“Date_Region”行乘以其“Weight-Barcode”数据框的长度。最终的数据框应如下所示:

【问题讨论】:

  • 以文本形式提供数据,请勿发布图片

标签: pandas merge split


【解决方案1】:

这样就可以了:

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) 将在每一行调用 lambda 函数。
  • lambda 函数使用 assign() 从该行返回嵌套的 DataFrame,并添加了带有外部值的 Date_Region 列。
  • 在结果系列上调用 iter(...) 会导致 DataFrame 的迭代已经包含添加的列。
  • 最后,在该可迭代对象上使用pd.concat(...) 将它们连接在一起。我在这里使用ignore_index=True 来重新索引所有内容(在我看来,您的索引没有意义,不忽略它们意味着您最终会得到重复。)
  • 最后,我对列重新排序,所以添加的 Date_Region 列成为最左边的列。

【讨论】:

    猜你喜欢
    • 2019-03-03
    • 2018-10-04
    • 2021-02-17
    • 1970-01-01
    • 2015-03-17
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多