Я использую функцию Pandas read_excel для создания data_frames для каждого столбца в моей книге. Данные используются с Google DFP API для создания позиций на нашем рекламном сервере.
Я перебираю и передаю данные из моих data_frames в dict как значения. Ниже мой код:
import pandas as pd
from googleads import dfp
workbook = 'dfp-migration-data.xlsx'
sheet = 'main'
df = pd.read_excel(workbook, sheet_name=sheet)
campaign_id = df['order_id'].tolist()
campaign = df['order'].tolist()
target = df['placement_id']
placement_id = []
def create_line_item(client, orders):
line_item_service = client.GetService('LineItemService')
line_items = []
for index, order in enumerate(orders):
line_item = {
'name': line_item_name[index],
'orderId': int(campaign_id[index]),
'targeting': {
'inventoryTargeting': {
'targetedPlacementIds': placement_id[index]},
},
line_items.append(line_item)
# Add line items to DFP
line_items = line_item_service.createLineItems(line_items)
# Display results
for line_item in line_items:
print(f"Order ID: {line_item['orderId']}"
f"Line Item: {line_item['name']}"
f"Placement IDs: {line_item['targeting']['inventoryTargeting']['targetedPlacementIds']}\n"
if __name__ == '__main__':
dfp_client = dfp.DfpClient.LoadFromStorage()
create_line_item(dfp_client, campaign)
Проблема, с которой я столкнулся, связана с фреймом данных target
, который имеет несколько значений в каждой ячейке. например,
df['placement_id'].head()
0 28816768, 28809669, 28809672, 28809675, 288092...
1 28825664, 28825670, 28825511, 28825673, 288256...
2 28825538, 28816006, 28814215, 28825544, 288254...
Name: placement_id, dtype: object
При передаче placement_id
в клавишу targetedPlacementIds
я получаю сообщение об ошибке, что имеет смысл, поскольку данные из моего фрейма данных являются строкой. Однако, если я пытаюсь обернуть 'location_id' функцией int()
, я получу 'ValueError: неверный литерал для int () с ошибкой base 10' . Я пытался использовать функции to_numbers () и astype (int ()) в Pandas, но получил ту же ошибку.
Как я могу преобразовать place_ids из строк в целые числа, чтобы я мог передать данные в мой line_item
dict?