Python熊猫| 创建一个新列-根据特定行的条件聚合函数

第1129章

这是简化的上下文。我有几种商品(Goods_ID 0001、0002和0003),其中多个商店(A,B,C)的价格不同。

我需要添加另外两个列“ MinPriceShop”和“ MinPrice”,以输出提供最低价格及其相应价格的商店。

输入df:

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:

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

我不确定如何将聚合函数(最小,最大,总和)应用于数据框,但是具有“行特定” /“动态”条件。

谢谢!

耶斯列尔

用于groupby具有idxmin最少Price每组数的数据帧,重命名列,并merge通过左连接恢复为原始。

替代解决方案使用sort_values+ drop_duplicates

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

详细说明

print (df1)
   Goods_ID  MinPriceShop  MinPrice
0         1             A      10.0
3         2             B      22.0
6         3             C       4.5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件(熊猫)创建一个可以等于许多列之一的新列

python使用多个条件创建一个新列

根据熊猫正则表达式的条件测试创建一个新列

熊猫根据函数中的值创建一个新的概率列

熊猫根据现有列的第一个唯一值创建新列

大熊猫-根据“下一个”行值创建新列

熊猫:groupby并创建一个新的列,将聚合应用于两列

根据熊猫中的条件创建一个布尔列

根据另一个熊猫中开始日期和结束日期列的条件创建新的熊猫数据框

在熊猫中如何从另一个部分创建一个新列,遵守条件?

熊猫:根据条件在每个组中创建一个新行

根据日期时间和大熊猫今天的日期创建一个新列

在熊猫中,根据顺序和值创建一个新列

通过迭代熊猫中的连续行创建一个新列

如何使用熊猫和/或plotly在Python中每x行创建一个新表?

根据数据框中的2列提取信息并创建一个新列-Python

Python Pandas根据另一个列值创建新列

Python groupby - 根据其他列中的值创建一个新列

根据熊猫中另一列上的值在数据框中创建一个新列

如何通过多个列组,创建一个基于Python中条件的新列?

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

创建一个函数,根据给定的参数(如熊猫列表中的列表)在数据框中创建新行

对唯一日期进行分组,并根据计算熊猫创建一个新列

根据特定的不断变化的列条件聚合Python数据框行

用熊猫识别重复的行,并将这些行转换为一行,从而创建一个新列

Python Pandas:根据另一个数据框的类别值创建新列

根据Python Pandas中的几个查找表创建一个新列

创建一个函数以基于给定的参数(如列表和熊猫中的特定条件)在数据框中创建新行

如果其他条件在python中在dataframe中创建一个新列