【发布时间】:2022-12-03 05:45:53
【问题描述】:
我在下面有一个数据框,其中 Day_1、Day_2、Day_3 是过去 3 天的展示次数。
df = pd.DataFrame({'Day_1': [2, 4, 8, 0],
'Day_2': [2, 0, 0, 0],
'Day_3': [1, 1, 0, 0],
index=['user1', 'user2', 'user3', 'user4'])
df
Day_1 Day_2 Day_3
user1 2 2 1
user2 4 0 1
user3 8 0 0
user4 0 0 0
现在,我需要检查用户在过去n 天是否有任何印象。例如,如果 num_days = 2,我需要添加一个新列,impression,如果 Day_1 和 Day_2 之和大于零,则该列为 1,否则为 0。这是我希望看到的:
Day_1 Day_2 Day_3 impression
user1 2 2 1 1
user2 4 0 1 1
user3 8 0 0 1
user4 0 0 0 0
在pyspark 中这是一个简单的过程,我使用这样的东西:
imp_cols = ['Day_'+str(i) for i in range(1, num_days+1)]
df = df.withColumn("impression",reduce(add, [F.col(x) for x in imp_cols]))
【问题讨论】: