熊猫数据框根据条件用不同的列值替换列的最大值

MishD

我有一个包含多个列的数据框,并且我只想根据某些条件“ Views”的最大值替换为三个不同的列。

 import pandas as PD
    data = [["1.Blend Of Vdx Display","DISPLAY","Features","CPE",1255,778732,13373,7142],["1.Blend Of Vdx Display","DISPLAY","TVC","CPE",10479,778732,13373,7142],
    ["2.Mobile VDX","Display","Features","CPE",168,1000,150,160],["2.Mobile VDX","Display","Features","CPE",2309,1000,150,160]]
df = pd.DataFrame(data,columns=['Placement#Name','PRODUCT','VIDEONAME','COST_TYPE',views','IMPRESSIONS','ENGAGEMENTS','DPEENGAMENTS'])



 print(df)
  Placement#Name  PRODUCT VIDEONAME COST_TYPE  views  IMPRESSIONS  \
0  1.Blend Of Vdx Display  DISPLAY  Features       CPE   1255       778732   
1  1.Blend Of Vdx Display  DISPLAY       TVC       CPE  10479       778732   
2            2.Mobile VDX  DISPLAY  Features       CPE    168         1000   
3            2.Mobile VDX  DISPLAY  Features       CPE   2309         1000   

   ENGAGEMENTS  DPEENGAMENTS  
0        13373          7142  
1        13373          7142  
2          150           160  
3          150           160

我可以通过这样做过滤出最大值

 newdf = df.loc[df.reset_index().groupby(['Placement#Name'])['Views'].idxmax()]

print (newdf)
         Placement#Name  PRODUCT VIDEONAME COST_TYPE  Views  IMPRESSIONS  \
1  1.Blend Of Vdx Display  DISPLAY       TVC       CPE  10479       778732   
3            2.Mobile VDX  DISPLAY  Features       CPE   2309         1000   

   ENGAGEMENTS  DPEENGAMENTS  
1        13373          7142  
3          150           160 

现在我想用10479和2309之类的条件替换newdf视图,可以用“参与度”列替换,因为条件是显示产品,而Cost_Type是CPE。

所以新的df输出是

print (newdf)
             Placement#Name  PRODUCT VIDEONAME COST_TYPE  Views  IMPRESSIONS  \
    1  1.Blend Of Vdx Display  DISPLAY       TVC       CPE  13373       778732   
    3            2.Mobile VDX  DISPLAY  Features       CPE   150        1000   

       ENGAGEMENTS  DPEENGAMENTS  
    1        13373          7142  
    3          150           160 

然后我想将其转换为原始df。因此原始输出为:

print (df)
     Placement#Name  PRODUCT VIDEONAME COST_TYPE  views  IMPRESSIONS  \
    0  1.Blend Of Vdx Display  DISPLAY  Features       CPE   1255       778732   
    1  1.Blend Of Vdx Display  DISPLAY       TVC       CPE  13373       778732   
    2            2.Mobile VDX  DISPLAY  Features       CPE    168         1000   
    3            2.Mobile VDX  DISPLAY  Features       CPE   150         1000   

       ENGAGEMENTS  DPEENGAMENTS  
    0        13373          7142  
    1        13373          7142  
    2          150           160  
    3          150           160
Vivek Kalyanarangan

另一种方法-

这会过滤掉并替换特定案例,从viewsENGAGEMENTS

newdf['views'] = newdf.apply(lambda x: x['ENGAGEMENTS'] if ((x['PRODUCT'].upper()=='DISPLAY') & (x['COST_TYPE']=='CPE')) else x['views'], axis=1)

追加2个数据框

df['views'].update(newdf['views'])

输出量

           Placement#Name  PRODUCT VIDEONAME COST_TYPE  views  IMPRESSIONS  \
0  1.Blend Of Vdx Display  DISPLAY  Features       CPE   1255       778732   
1  1.Blend Of Vdx Display  DISPLAY       TVC       CPE  13373       778732   
2            2.Mobile VDX  Display  Features       CPE    168         1000   
3            2.Mobile VDX  Display  Features       CPE    150         1000   

   ENGAGEMENTS  DPEENGAMENTS  
0        13373          7142  
1        13373          7142  
2          150           160  
3          150           160 

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件用不同的替换字典替换pandas数据框列中的值

根据条件在熊猫数据框中添加新列,并替换不同列中的Nan值

根据条件替换熊猫数据框列中的值

如何根据 R 数据框中特定列的条件获得行式最大值?

熊猫根据条件替换数据框值

根据熊猫数据框中的条件获取最大值和最小值

如何根据“标识符列”和熊猫数据框中的附加条件替换值?

根据 groupby 场景熊猫中的最大值计数替换列值

根据条件用不同行中相同列的值替换多个列中的值

熊猫数据框替换多个列条件下的值

熊猫数据框 - 根据条件设置列值

根据熊猫数据框中的条件为列分配值

熊猫数据框根据条件更改列中的值

如何根据条件用NaN替换数据框列值?

根据条件替换数据框列中的值

根据条件替换数据框的列中的多个值

Pandas 数据框根据条件替换列中的值

熊猫数据框,找到最大值并返回相邻列的值,而不是整行

如何用熊猫列的最大值替换无限值?

如何使用熊猫根据条件查找列的最大值并按顺序排列它们?

熊猫根据其最大值划分多列

根据列值重塑熊猫数据框

根据列值连接熊猫数据框

根据列中的最大值对列进行排序 - R 数据框排列

根据多种条件替换熊猫数据框中的值

如何根据条件替换熊猫数据框中的值?

如何在熊猫数据框的多个列中最小/最大值?

确定熊猫数据框中每隔一列的最大值

从整个熊猫数据框中返回最大值,而不是基于列或行