【发布时间】:2020-02-06 07:01:14
【问题描述】:
我有一个数据框,它有两列。其中一列也是另一个数据框。如下所示:
我想要一个包含 3 列的数据框,其中包含“Date_Region”、“transformed_weight”和“Barcode”,它将复制每个“Date_Region”行乘以其“Weight-Barcode”数据框的长度。最终的数据框应如下所示:
【问题讨论】:
-
以文本形式提供数据,请勿发布图片
我有一个数据框,它有两列。其中一列也是另一个数据框。如下所示:
我想要一个包含 3 列的数据框,其中包含“Date_Region”、“transformed_weight”和“Barcode”,它将复制每个“Date_Region”行乘以其“Weight-Barcode”数据框的长度。最终的数据框应如下所示:
【问题讨论】:
这样就可以了:
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 函数。assign() 从该行返回嵌套的 DataFrame,并添加了带有外部值的 Date_Region 列。iter(...) 会导致 DataFrame 的迭代已经包含添加的列。pd.concat(...) 将它们连接在一起。我在这里使用ignore_index=True 来重新索引所有内容(在我看来,您的索引没有意义,不忽略它们意味着您最终会得到重复。)Date_Region 列成为最左边的列。【讨论】: