|
@@ -66,6 +66,13 @@ features = [
|
|
|
'lastday_view_total', # 昨日曝光次数
|
|
|
'lastday_play_total', # 昨日播放次数
|
|
|
'lastday_share_total', # 昨日分享次数
|
|
|
+ 'platform_return',
|
|
|
+ 'platform_preview',
|
|
|
+ 'platform_preview_total',
|
|
|
+ 'platform_show',
|
|
|
+ 'platform_show_total',
|
|
|
+ 'platform_view',
|
|
|
+ 'platform_view_total',
|
|
|
]
|
|
|
|
|
|
|
|
@@ -137,6 +144,7 @@ def cal_score(df):
|
|
|
df['ctr'] = df['lastday_play'] / (df['lastday_preview'] + 1000)
|
|
|
df['K2'] = df['ctr'].apply(lambda x: 0.6 if x > 0.6 else x)
|
|
|
df['score'] = df['share_rate'] * df['back_rate'] * df['log_back'] * df['K2']
|
|
|
+ df['platform_return_rate'] = df['platform_return'] / df['回流人数']
|
|
|
df = df.sort_values(by=['score'], ascending=False)
|
|
|
return df
|
|
|
|
|
@@ -157,6 +165,8 @@ def video_rank(df, now_date, now_h, rule_key, param, region):
|
|
|
return_count = param.get('return_count', 1)
|
|
|
score_value = param.get('score_rule', 0)
|
|
|
h_recall_df = df[(df['lastday_return'] >= return_count) & (df['score'] >= score_value)]
|
|
|
+ platform_return_rate = param.get('platform_return_rate', 0)
|
|
|
+ h_recall_df = h_recall_df[h_recall_df['platform_return_rate'] > platform_return_rate]
|
|
|
# videoid重复时,保留分值高
|
|
|
h_recall_df = h_recall_df.sort_values(by=['score'], ascending=False)
|
|
|
h_recall_df = h_recall_df.drop_duplicates(subset=['videoid'], keep='first')
|