|
@@ -27,6 +27,26 @@ def request(url_path: str, method: str = "GET", head: dict = None, params: dict
|
|
|
return resp.json()
|
|
|
|
|
|
|
|
|
+def convert_row(row):
|
|
|
+ l_t = None
|
|
|
+ l_p = None
|
|
|
+ l_r = None
|
|
|
+ if len(row['dyp']) > 0:
|
|
|
+ for i in row['dyp']:
|
|
|
+ a = json.loads(i)
|
|
|
+ if 'placement' in a:
|
|
|
+ if a['placement'] == "PLACEMENT_TOP":
|
|
|
+ l_t = a['percentage']
|
|
|
+ if a['placement'] == "PLACEMENT_PRODUCT_PAGE":
|
|
|
+ l_p = a['percentage']
|
|
|
+ if a['placement'] == "PLACEMENT_REST_OF_SEARCH":
|
|
|
+ l_r = a['percentage']
|
|
|
+ return l_t, l_p, l_r
|
|
|
+# row['top'],row['product_page'],row['rest_of_search']
|
|
|
+
|
|
|
+def parse_dict_list(lst):
|
|
|
+ return [json.dumps(json_str) for json_str in lst]
|
|
|
+
|
|
|
class SpCampaign:
|
|
|
def __init__(self, profile_id, portfolioId: list = None):
|
|
|
self.profile_id = profile_id
|
|
@@ -84,6 +104,10 @@ class SpCampaign:
|
|
|
tem = pd.concat([old, df]).reset_index()
|
|
|
tem.drop(columns='index', inplace=True)
|
|
|
tem.columns = [i.replace(".", "_") for i in tem.columns]
|
|
|
+ tem['dyp'] = tem['dynamicBidding_placementBidding']
|
|
|
+ tem.dyp = tem.dyp.apply(parse_dict_list)
|
|
|
+ tem[['top', 'product_page', 'rest_of_search']] = tem.apply(convert_row, axis=1, result_type='expand')
|
|
|
+ tem.drop(columns='dyp', inplace=True)
|
|
|
tem.rename(columns={
|
|
|
'name': 'campaignName',
|
|
|
'portfolioId': 'portfolio',
|