我正在开发一个用于分析亚马逊营销事件数据集的项目。这些事件具有层次结构:
“事件”包括 “广告组”包括 “关键字”。
虽然我可以看到所有记录类型(广告系列、广告组和关键字)的效果值,但“出价”的更改只能在记录类型关键字上进行。实际的营销事件有 17.000 行和几个不同的营销事件等,但是,我在这里创建了一个示例版本:
import pandas as pd
d = {'Record Type': ['Campaign','AdGroup','Keyword','Keyword','Keyword'],
'Campaign':['Test_Campaign','Test_Campaign','Test_Campaign','Test_Campaign','Test_Campaign'],
'AdGroup':['','AdGroup_A','AdGroup_A','AdGroup_A','AdGroup_A'],
'Keyword':['','','Keyword_A','Keyword_B','Keyword_C'],
'Bid':['NA','NA',1,1,1],
'Performance':['0.3','0.9',0.6,1.1,1.3]}
df = pd.DataFrame(data=d)
print(df)
我希望程序做什么:
1) 检查“记录类型”广告组的效果。如果效果有特定条件(例如效果 < 1),则应更改“记录类型”关键字的出价(例如 +10%)。
我的想法:
创建一个由“campaign_AdGroup”值组合而成的新列(然后我们为每个广告组分配一个单一值,因为同名的广告组可能位于另一个广告系列中)。
里>再创建一个列,其中包含操作“Action”的值(例如:110%,因为我们希望将关键字提升 10%)。
- 在最后一步中,我将迭代所有“记录类型”关键字,并对“广告系列 + AdGroup”的组合执行 VLOOKUP。如果在“操作”中找到结果,则应将特定关键字的出价乘以“操作”值。
您对第 3 步有什么建议吗?这是最后的代码:
import pandas as pd
d = {'Record_Type': ['Campaign','AdGroup','Keyword','Keyword','Keyword'],'Campaign':['Test_Campaign','Test_Campaign',
'Test_Campaign','Test_Campaign','Test_Campaign'],'AdGroup':['','AdGroup_A','AdGroup_A','AdGroup_A','AdGroup_A']
,'Keyword':['','','Keyword_A','Keyword_B','Keyword_C'],'Bid':['NA','NA',1,1,1],'Performance':[0.3,0.9,0.6,1.1,1.3]}
df = pd.DataFrame(data=d)
df ['Action'] = 1
df ['Help'] = df['Record_Type'] + df['Campaign']
print(df)
最佳答案
我可能会使用 apply lambda 函数。 即
df["Action"] = df.apply(lambda r: 1.1 if r["Record_Type"] == "AdGroup" and r["Performance"] < 1 else r["Action"], axis=1)
您还可以将 iloc 与条件一起使用。
关于python - 如何使用 VLOOKUP 类型在 Pandas 中的新列中添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436800/