Если вы хотите работать с .csv и .json файлами, вы должны использовать pandas lib.
Для чтения файла вы можете использовать read_csv () , он вернет объект pandas DataFrame , которым вы можете манипулировать, а затем, если вы хотите сохранить его как файл .csv, просто используйте to_csv ()
Для доступа к определенной строке или столбцу вы можете использовать loc или iloc
Вы также можете преобразовать Series всписок питонов с tolist ()
например,
DF = pandas.DataFrame.read_csv('filename.csv')
orders = DF['Orders'].tolist()
orders - это список python со значениями из столбца с именем Orders from your.CSV-файл
Редактировать: Как обсуждалось в комментариях, вы должны выяснить, какой инструмент лучше всего подходит для вашей проблемы.Но если вы планируете работать с большим набором данных, я рекомендую вам прочитать об использовании памяти пандами в документах
Интересная статья: сокращение использования памяти пандами для больших наборов данных
Редактировать 2:
Чтобы получить каждый столбец вашего DataFrame в виде списка, вы должны сделать:
orders = DF['order_id'].tolist()
targets = DF['targeted_placement_id'].tolist()
campaigns = DF['campaign'].tolist()
# print(orders, targets, campaigns)
1054 * ValueError , который вы получаете, заключается в том, что вы пытаетесь передать эти списки в качестве значений ключам вашего словаря orderId
, name
и targetedPlacementIds
.Один из способов перебора этих списков - с помощью enumerate(orders)
он вернет индекс и порядковый номер каждой позиции.
например,
0 3494982232
1 8494984434
2 4494922232
И затем получитьcampaigns
и targets
каждого заказа, вы просто передаете списки с индексом заказа, так что ваш цикл будет выглядеть примерно так:
# Create line item objects.
line_items = []
for index, order in enumerate(orders):
line_item = {
'orderId': order,
'name': campaigns[index],
'targeting': {
'inventoryTargeting': {
'targetedPlacementIds': targets[index]
}
}
}
line_items.append(line_item)
print(line_items)
наконец, ваш line_items
будет спискомгде каждая позиция - словарь.
PS:
В вашем цикле печати есть ошибка, вместо line_item['targetedPlacementId']
должно быть line_item['targeting']['inventoryTargeting']['targetedPlacementIds']
Вы также можете проверить, имеет ли ваш DataFrame нулевые значения с помощью:
if DF.isnull().values.any():
raise Exception('Null values')