【问题标题】:How do you repeat each row for a dataframe for each value in a seperate dataframe and then combine the two into a single dataframe?如何为单独数据框中的每个值重复数据框的每一行,然后将两者组合成一个数据框?
【发布时间】:2020-08-12 19:35:57
【问题描述】:

我在单个列中有一个具有多个 ID 的数据框,如下所示:

还有第二个数据框,也只有一列,其中包含月份:

如何在 python 中组合这两个数据框,以便第一个数据框中的每个元素与 ID 重复用于包含月份的数据框中的每个元素?

我最终得到一个如下所示的最终数据框:

【问题讨论】:

  • 交叉合并:df1.assign(dummy=1).merge(df2.assign(dummy=1), on='dummy')
  • @QuangHoang 成功了,谢谢!您想将此作为答案发布,以便我接受吗?

标签: python pandas dataframe data-manipulation


【解决方案1】:

您可以为每个 DataFrame 分配一个冗余的 key 列(改变原始数据帧)并加入它,然后在返回最终结果之前将其删除:

import pandas as pd

df1 = pd.DataFrame({
    'id': list(range(1, 5))
})

df2 = pd.DataFrame({
    'month': ['2010-01', '2010-02', '2010-03']
})

df_merged = pd.merge(
    df1.assign(key=1),
    df2.assign(key=1),
    on='key'
).drop('key', axis=1)
+----+----+---------+
|    | id |  month  |
+----+----+---------+
|  0 |  1 | 2010-01 |
|  1 |  1 | 2010-02 |
|  2 |  1 | 2010-03 |
|  3 |  2 | 2010-01 |
|  4 |  2 | 2010-02 |
|  5 |  2 | 2010-03 |
|  6 |  3 | 2010-01 |
|  7 |  3 | 2010-02 |
|  8 |  3 | 2010-03 |
|  9 |  4 | 2010-01 |
| 10 |  4 | 2010-02 |
| 11 |  4 | 2010-03 |
+----+----+---------+

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多