【问题标题】:How to join data from two seperate columns based upon condition to another dataframe?如何根据条件将来自两个单独列的数据连接到另一个数据框?
【发布时间】:2022-01-12 15:53:12
【问题描述】:

如果日期大于 2015 年 1 月 1 日,我想从 df2 添加数据,如果日期小于 2015 年 1 月 1 日,我想从 df1 添加数据。不确定如何执行此操作,因为列的长度不同。

我有一个主 DF df1,以及两个包含名为 df2 和 df3 的数据的数据帧。

df2 看起来像这样:

day                 Value
01/01/2015           5
02/01/2015           6
...

直到今天,

我也有 DF3,它是相同的数据,但从 2000 年到今天,就像

day                 Value
01/01/2000           10
02/01/2000           15
...

我想在 DF1 中添加一个 Value 列,即日期小于 2015 年时 DF3 的值,以及日期大于 2015 年 1 月 1 日(包括)时的 DF2 值。不确定如何使用条件执行此操作。我认为 np.where 有一种方法,但不确定如何。

添加更多上下文。

我想把这句话编成代码:

df1[values] = DF2[Values] 当日期大于 1/1/2015 和 df1[values] = DF3[Values] 当日期小于 1/1/2015

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    如果你想加入 2 个数据框,你可以使用 df1.mrege (df2,on="col_name")。如果您想要一个数据框的条件并与另一个数据框连接,

    这样做,

    import pandas as pd
    #generating 2 dataframes
    date1 = pd.date_range(start='1/01/2015', end='2/02/2015')
    val1 = [2,3,5]*11. #length equal to date
    dict1 = {"Date":date2,"Value":val1}
    df1 = pd.DataFrame(dict1)
    df1. #view df1
    date2 = pd.date_range(start='1/01/2000', end='2/02/2020')
    val2 = [21,15]*3669. #length equal to date
    dict2 = {"Date":date2,"Value":val2}
    df2 = pd.DataFrame(dict2)
    df2. #view df1
    df3 =df1[df1["Date"]<"2015-02-01"] #whatever condition you want apply
    and store on different dataframe
    df2.merge(df3,on="Date")
    df2 #joined dataframe
    

    这是您可以在日期上加入 2 个数据框的方法,只需申请 条件并存储我另一个数据帧并将其与第一个数据帧连接 df.merge(df3,on="Date") 的数据帧

    【讨论】:

      猜你喜欢
      • 2020-01-11
      • 2014-10-20
      • 1970-01-01
      • 2019-04-02
      • 2019-03-19
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多