如何将新列添加到从另一个datafram返回同一组中较大的最小值的df中

2024-09-26 22:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有以下两个数据帧:df1和df2

我想创建一个新的数据帧df3,使它与df1相同,但有一个额外的列称为“newprice”

我希望填充新价格的方法是返回第一个价格,该价格与df2中的代码相同,大于或等于df1中的价格

以下是数据帧:

df1型:

Code    Price
X        4.3    
X        2.5    
X        4  
X        1.5    
X        0.24   
X        1  
X        1.3    
Y        3.9    
Y        2.6    

df2型:

Code Price
X   0.5
X   1
X   1.5
X   2
X   2.5
X   3
X   3.5
X   4
X   4.5
X   5
X   5.5
Y   0.5
Y   1
Y   1.5
Y   2
Y   2.5
Y   3
Y   3.5
Y   4
Y   4.5
Y   5
Y   5.5

例如,让我们考虑df1中的第一个条目

Code Price
X    4.3

因此,“新价格”列应该查看df2中代码为X的所有价格,并返回df2中大于或等于4.3的最小价格

在这种情况下是4.5

对每行重复此步骤以获得

df3公司:

Code    Price   New Price
X        4.3       4.5
X        2.5       2.5
...
Y         2.6       3

有没有人知道如何做到这一点,我尝试过,但没有成功


Tags: 数据方法代码new情况步骤code公司
1条回答
网友
1楼 · 发布于 2024-09-26 22:09:08

您可以进行交叉连接,然后query,最后groupby().first()

m=(df1.assign(key=1).merge(df2.assign(key=1),on='key',suffixes=('','_y')).drop('key', 1)
                                            .query("(Code==Code_y)&(Price<=Price_y)"))
m.groupby(['Code','Price'],sort=False)['Price_y'].first().reset_index(name='New Price')

  Code  Price  New Price
0    X   4.30        4.5
1    X   2.50        2.5
2    X   4.00        4.0
3    X   1.50        1.5
4    X   0.24        0.5
5    X   1.00        1.0
6    X   1.30        1.5
7    Y   3.90        4.0
8    Y   2.60        3.0

相关问题 更多 >

    热门问题