作为背景,我试图使用回归来衡量某一周内竞争对手广告的出现是否会影响该广告的衡量标准.我不确定如何合并周,或根据品牌在一周内的存在情况(但在不同的行上)分配布尔值(1或0).

import pandas as pd

df = pd.DataFrame({'week': ['2019-11-11', '2019-11-11', '2019-11-18', '2019-11-25', '2019-11-11', '2019-11-18', '2019-11-11'],
                   'brand':['X', 'X-2', 'X', 'X', 'Y', 'Y', 'Z'],
                   'score': [.34, .25, .54, .23, .22, .34, .44]}) 

预期结果:

df = pd.DataFrame({'week': ['2019-11-11', '2019-11-11', '2019-11-18', '2019-11-25', '2019-11-11', '2019-11-18', '2019-11-11'],
                   'brand':['X', 'X-2', 'X', 'X', 'Y', 'Y', 'Z'],
                   'score': [.34, .25, .54, .23, .22, .34, .44],
                   'presence_dummy_Y': [1, 1, 1, 0, 1, 1, 1],
                  'presence_dummy_Z': [1, 1, 0, 0, 1, 0, 1]}) 

推荐答案

你可以get_dummies,用loc/filter筛选竞争对手,如果一周内至少有1,GroupBy.max:

df.join(pd
 .get_dummies(df['brand'])  # transform to dummies
 .filter(regex='^(?!X)')  # keep only brands not starting with X
 .groupby(pd.to_datetime(df['week']).dt.to_period('W')) # groupby week
 .transform('max')      # 1 if at least a 1
 .add_prefix('dummy_')  # rename columns
)

输出:

         week brand  score  dummy_Y  dummy_Z
0  2019-11-11     X   0.34        1        1
1  2019-11-11   X-2   0.25        1        1
2  2019-11-18     X   0.54        1        0
3  2019-11-25     X   0.23        0        0
4  2019-11-11     Y   0.22        1        1
5  2019-11-18     Y   0.34        1        0
6  2019-11-11     Z   0.44        1        1

Python相关问答推荐

替换字符串中的多个重叠子字符串

如何使用pandasDataFrames和scipy高度优化相关性计算

Pandas 有条件轮班操作

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

django禁止直接分配到多对多集合的前端.使用user.set()

将9个3x3矩阵按特定顺序排列成9x9矩阵

NumPy中条件嵌套for循环的向量化

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

如何在Python中找到线性依赖mod 2

用渐近模计算含符号的矩阵乘法

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

如何在FastAPI中替换Pydantic的constr,以便在BaseModel之外使用?'

如何在Python中将超链接添加到PDF中每个页面的顶部?

修改.pdb文件中的值并另存为新的

根据过滤后的牛郎星图表中的数据计算新系列

将标签与山脊线图对齐

在不降低分辨率的情况下绘制一组数据点的最外轮廓

如何更改网络中某条边的位置(&Q;)?