【问题标题】:How can I merge two datasets with different frequency in their rows and preserve all information? [duplicate]如何在行中合并两个频率不同的数据集并保留所有信息? [复制]
【发布时间】:2020-06-21 10:35:55
【问题描述】:

我有两个数据框。第一个称为“人口统计”,如下所示:

date_month  date_week  population  village  country
 2020-04    2020-04-06    1000        V1       C1
 2020-04    2020-04-06    1400        V2       C1
 2020-04    2020-04-06    1500        V2       C2
 2020-04    2020-04-06    1200        V3       C2
 2020-04    2020-04-13    1001        V1       C1
 2020-04    2020-04-13    1401        V2       C1
 2020-04    2020-04-13    1501        V2       C2
 2020-04    2020-04-13    1201        V3       C2
 2020-04    2020-04-20    1002        V1       C1
 2020-04    2020-04-20    1402        V2       C1
 2020-04    2020-04-20    1502        V2       C2
 2020-04    2020-04-20    1202        V3       C2
 2020-04    2020-04-27    1003        V1       C1
 2020-04    2020-04-27    1403        V2       C1
 2020-04    2020-04-27    1503        V2       C2
 2020-04    2020-04-27    1203        V3       C2

如您所见,人口统计数据的每一行都有一个每周频率。第二个数据集称为“收入”,有每月频率,如下所示:

date_month  village   country  income  person
 2020-04      V1         C1      10     John
 2020-04      V2         C1       8     Mike
 2020-04      V2         C2       9     Sarah
 2020-04      V3         C2      10     Adam

我想生成一个包含人口和收入列的每周频率数据框,同时还保留人员。像这样:

date_month  village   country  income  person   date_week   population 
 2020-04      V1         C1      10     John    2020-04-06     1000
 2020-04      V2         C1       8     Mike    2020-04-06     1400
 2020-04      V2         C2       9     Sarah   2020-04-06     1500
 2020-04      V3         C2      10     Adam    2020-04-06     1200
 2020-04      V1         C1      10     John    2020-04-13     1001
 2020-04      V2         C1       8     Mike    2020-04-13     1401
 2020-04      V2         C2       9     Sarah   2020-04-13     1501
 2020-04      V3         C2      10     Adam    2020-04-13     1201
 2020-04      V1         C1      10     John    2020-04-20     1002
 2020-04      V2         C1       8     Mike    2020-04-20     1402
 2020-04      V2         C2       9     Sarah   2020-04-20     1502
 2020-04      V3         C2      10     Adam    2020-04-20     1202
 2020-04      V1         C1      10     John    2020-04-27     1003
 2020-04      V2         C1       8     Mike    2020-04-27     1403
 2020-04      V2         C2       9     Sarah   2020-04-27     1503
 2020-04      V3         C2      10     Adam    2020-04-27     1203

我怎样才能有效地做到这一点?假设 date_month 列中有匹配项,我似乎需要“乘以”然后将每月数据集与频率数据集中的周数连接起来?

【问题讨论】:

  • 试试这个:newdf = pd.merge(demographics, income, on=['date_month','village','country'])

标签: python pandas dataframe join merge


【解决方案1】:

您应该能够使用 pandas 合并来获得该结果(假设 date_month 是一列):

demographics.merge(income,on=['date_month','village','country'])

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2023-01-20
    • 1970-01-01
    • 2021-10-10
    • 2014-04-30
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多