Python pandaps |基于特定于行的条件创建一个新的列聚合函数

2024-10-01 15:49:08 发布

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

以下是简化的上下文。我有几种商品(商品编号00010002和0003),多个商店(A、B、C)的价格不同。在

我需要添加两个额外的列,“MinPriceShop”和“MinPrice”,输出提供最低价格的商店及其各自的价格。在

输入数据框:

Goods_ID    ShopID  Price
0001        A       10
0001        B       12
0002        A       23
0002        B       22
0003        A       5
0003        B       6
0003        C       4.5

期望输出df:

^{pr2}$

我不确定如何将聚合函数(min、max、sum)应用于数据帧,但要满足“行特定”/“动态”条件。在

谢谢!在


Tags: 数据函数iddf价格minprice商品
1条回答
网友
1楼 · 发布于 2024-10-01 15:49:08

^{}^{}一起用于数据帧,每个组的行数最少为Price,将列和{a3}重命名为带左连接的原始数据框。在

替代方案使用^{}+^{}

d = {'ShopID':' MinPriceShop','Price':'MinPrice'}
df1 = df.loc[df.groupby('Goods_ID')['Price'].idxmin()].rename(columns=d)
#alternative solution:
#df1 = df.sort_values(['Goods_ID','Price']).drop_duplicates('Goods_ID').rename(columns=d)

df = pd.merge(df, df1, on='Goods_ID', how='left')
print (df)
   Goods_ID ShopID  Price  MinPriceShop  MinPrice
0         1      A   10.0             A      10.0
1         1      B   12.0             A      10.0
2         2      A   23.0             B      22.0
3         2      B   22.0             B      22.0
4         3      A    5.0             C       4.5
5         3      B    6.0             C       4.5
6         3      C    4.5             C       4.5

细节

^{pr2}$

相关问题 更多 >

    热门问题