python - 如何使用 VLOOKUP 类型在 Pandas 中的新列中添加值?

标签 python python-3.x pandas performance vlookup

我正在开发一个用于分析亚马逊营销事件数据集的项目。这些事件具有层次结构:

“事件”包括 “广告组”包括 “关键字”。

虽然我可以看到所有记录类型(广告系列、广告组和关键字)的效果值,但“出价”的更改只能在记录类型关键字上进行。实际的营销事件有 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%)。

我的想法:

  1. 创建一个由“campaign_AdGroup”值组合而成的新列(然后我们为每个广告组分配一个单一值,因为同名的广告组可能位于另一个广告系列中)。

  2. 再创建一个列,其中包含操作“Action”的值(例如:110%,因为我们希望将关键字提升 10%)。

  3. 在最后一步中,我将迭代所有“记录类型”关键字,并对“广告系列 + 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/

相关文章:

python - 在使用子进程的脚本上使用 Py2App 后收到启动错误

python - SQLAlchemy Automap 反向引用错误

python - 即使显式等待已经存在,也无法摆脱硬编码延迟

python - 使用 imshow 绘制 hsv 值

python - 如何命名 Pandas 系列

python - 将 DataFrame 中的值限制在指定范围内

Python 构造函数和 __init__

python - 如何为具有预定义类型的函数(参数和返回类型)定义类型?

Python Selenium Webdriver : Unable to load all reviews on the browser

python - 根据公共(public)字段将两行合并为一行