【问题标题】:Get data from another data frame in python从python中的另一个数据框中获取数据
【发布时间】:2022-01-08 19:29:03
【问题描述】:

我的数据框df1:

    ID    Date
0   90  02/01/2021
1   101 01/01/2021
2   30  12/01/2021

我的数据框df2:

    ID  City  01/01/2021    02/01/2021  12/01/2021
0   90    A     20            14          22
1   101   B     15            10          5
2   30    C     12            9           13

我需要在 df1 'New' 中创建一个列。它应该包含来自 df2 的关于 df1 的“ID”和“日期”的数据。我发现合并数据很困难。我该怎么办?

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

    你可以meltmerge

    df1.merge(df2.melt(id_vars=['ID', 'City'], var_name='Date'), on=['ID', 'Date'])
    

    输出:

        ID        Date City  value
    0   90  02/01/2021    A     14
    1  101  01/01/2021    B     15
    2   30  12/01/2021    C     13
    

    替代方案:

    df1.merge(df2.melt(id_vars='ID',
                       value_vars=df2.filter(regex='/'),
                       var_name='Date'),
              on=['ID', 'Date'])
    

    输出:

        ID        Date  value
    0   90  02/01/2021     14
    1  101  01/01/2021     15
    2   30  12/01/2021     13
    

    【讨论】:

      【解决方案2】:

      DataFrame.meltDataFrame.merge 一起使用:

      df22 = df2.drop('City', 1).melt(['ID'], var_name='Date', value_name='Val')
      df = df1.merge(df22, how='left')
      print (df)
          ID        Date  Val
      0   90  02/01/2021   14
      1  101  01/01/2021   15
      2   30  12/01/2021   13
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 1970-01-01
        • 2021-08-31
        • 2023-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多