【问题标题】:Merge two dataframes with interval of columns合并两个具有列间隔的数据框
【发布时间】:2023-01-26 19:10:11
【问题描述】:

我有两个数据框,我想合并它们,但将其中一个数据框的值放在另一个数据框中。我该怎么做?

数据框 1:

Date dif
2023-01-01 -5.0
2023-01-02 -4.0
2023-01-03 0.0
2023-01-04 1.0

数据框 2:

Porcentaje Inc
-3.0 0.0
1.0 2.0

结果:

Date dif Inc
2023-01-01 -5.0 0.0
2023-01-02 -4.0 0.0
2023-01-03 0.0 2.0
2023-01-04 1.0 2.0

结果必须是两个 df 之间以 dif 和 de Porcentaje 的间隔合并。例如,如果 dif < -3.0,则 Inc 将为 0.0。

在此示例中,dif 永远不会大于 porcentaje 的最大值 = 1.0

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案1】:

    这是merge_asof

    out = pd.merge_asof(df1.sort_values(by='dif'),
                        df2.sort_values('Porcentaje'),
                        left_on='dif', right_on='Porcentaje',
                        direction='forward')
    

    输出:

             Date  dif  Porcentaje  Inc
    0  2023-01-01 -5.0        -3.0  0.0
    1  2023-01-02 -4.0        -3.0  0.0
    2  2023-01-03  0.0         1.0  2.0
    3  2023-01-04  1.0         1.0  2.0
    

    您可以通过首先使用 rename 来匹配 df1 中的键来避免使用 Porcentaje 列:

    out = pd.merge_asof(df1.sort_values(by='dif'),
                        df2.sort_values('Porcentaje')
                           .rename(columns={'Porcentaje': 'dif'}),
                        on='dif', direction='forward')
    

    输出:

             Date  dif  Inc
    0  2023-01-01 -5.0  0.0
    1  2023-01-02 -4.0  0.0
    2  2023-01-03  0.0  2.0
    3  2023-01-04  1.0  2.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 2016-10-19
      • 2020-12-04
      • 2017-06-24
      相关资源
      最近更新 更多