【问题标题】:Merging two DataFrames based on Conditions根据条件合并两个 DataFrame
【发布时间】:2018-11-17 11:50:43
【问题描述】:

我想根据两个dataframe之间fact_date和scen的条件匹配合并两个DataFrame,然后将altdate列添加到第二个dataframe中。

第一个数据框如下所示:

          fact_date   scen altdate
0        2008-08-18   -1  2008-08-25
1        2008-08-18    0  2008-08-18
2        2008-08-18    1  2008-08-15
3        2008-08-18    2  2008-08-14
4        2008-08-18    3  2008-08-13
5        2008-08-18    4  2008-08-12
6        2008-08-18    5  2008-08-11
7        2008-08-18    6  2008-08-08
8        2008-08-18    7  2008-08-07
9        2008-08-18    8  2008-08-06
...

第二个数据框如下所示:

          fact_date  flag       scen  values
0        2008-08-18     0       -1   462456.29
1        2008-08-18     0        0  1119881.78
2        2008-08-18     0        1  1922320.74
3        2008-08-18     0        2  3559026.11
4        2008-08-18     0        3  3510447.61
5        2008-08-18     0        4  4873269.42
6        2008-08-18     0        5  5098557.55
7        2008-08-18     0        6  4610888.45
8        2008-08-18     0        7  4090821.69
9        2008-08-18     0        8  4219340.84
...

输出应如下所示:

          fact_date  flag       scen  values     altdate
0        2008-08-18     0       -1   462456.29   2008-08-25
1        2008-08-18     0        0  1119881.78   2008-08-18
2        2008-08-18     0        1  1922320.74   2008-08-15
3        2008-08-18     0        2  3559026.11   2008-08-14
4        2008-08-18     0        3  3510447.61   2008-08-13
5        2008-08-18     0        4  4873269.42   2008-08-12
6        2008-08-18     0        5  5098557.55   2008-08-11
7        2008-08-18     0        6  4610888.45   2008-08-08
8        2008-08-18     0        7  4090821.69   2008-08-07
9        2008-08-18     0        8  4219340.84   2008-08-06
...

【问题讨论】:

    标签: python dataframe


    【解决方案1】:

    我会试试的

    df2.merge(df1, on=['fact_date', 'scen'])
    

    返回

        fact_date  flag  scen      values     altdate
    0  2008-08-18     0    -1   462456.29  2008-08-25
    1  2008-08-18     0     0  1119881.78  2008-08-18
    2  2008-08-18     0     1  1922320.74  2008-08-15
    3  2008-08-18     0     2  3559026.11  2008-08-14
    4  2008-08-18     0     3  3510447.61  2008-08-13
    5  2008-08-18     0     4  4873269.42  2008-08-12
    6  2008-08-18     0     5  5098557.55  2008-08-11
    7  2008-08-18     0     6  4610888.45  2008-08-08
    8  2008-08-18     0     7  4090821.69  2008-08-07
    9  2008-08-18     0     8  4219340.84  2008-08-06
    

    【讨论】:

    • 这就是我要找的...非常感谢!
    【解决方案2】:

    我不完全明白你在说什么,但我认为你只是想加入。如果你使用的是 Pandas,它应该是这样的:

    df2 = df2.join(df1,on=['fact_date','scen'],how='left')
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2022-08-19
      • 2015-11-23
      相关资源
      最近更新 更多