Я использую Pandas для создания трех списков на основе данных из трех отдельных столбцов моего CSV-файла.Мои списки:
order_list = df['order'][:10].tolist())
user_id_list = df['user_id'][:10].tolist())
company_id_list = df['company_id'][:10].tolist())
Внутри моей функции create_order()
я перебираю каждый список и использую enumerate()
, чтобы добавить элементы к трем отдельным диктам.Например:
def create_order(orders, users, companies):
for index, order in enumerate(orders):
x = {
'name': order,
}
for index, user_id in enumerate(users):
y = {
'user': user_id,
}
for index, company_id in enumerate(companies):
z = {
'company': company_id,
}
if __name__ == '__main__':
create_order(order_list, user_id_list, company_id_list)
Я хочу объединить все три диктанта и вернуть данные для каждой строки данных из моего файла CSV.Однако мне нужно, чтобы объекты order
были уникальными.Мне удалось объединить возвращенные сообщения, используя распаковка обобщений .например, {**x, **y}
.Единственный способ, которым я могу выполнить объединение слов, если я создаю вложенные циклы for;что мешает мне возвращать уникальные заказы.
Как лучше всего объединить мой словарь в один запрос, чтобы я мог просматривать и возвращать уникальные данные с уникальными заказами?
РЕДАКТИРОВАТЬ с коррекциями
Вот мой исходный вывод DF:
company_id user_id order
0 111 222 order 1
1 111 222 order 1
2 111 222 order 1
3 111 222 order 2
4 111 222 order 2
5 111 222 order 3
Ниже приведен пример желаемого результата со всеми уникальными ордерами:
company_id user_id order
111 222 order 1
111 222 order 2
111 222 order 3
Причиной попытки решить проблему с циклами for была необходимость иметь все необходимые выходные данные для возврата указания на импорт в базу данных через Google DFP API.
Ниже приведен рабочий кодс желаемым выходом благодаря руководству @MeHdi.
df = pd.read_csv('order_data.csv')
order_list = df['order'].tolist()
user_id_list = df['user_id'].tolist()
company_id_list = df['company_id']].tolist()
for x in company_id_list:
company_id = int(x)
df = pd.DataFrame(
{
'name': order_list,
'userId': user_id_list,
'companyId': company_id
}
)
list_obj = df.reindex(columns=['companyId', 'userId', 'name']).drop_duplicates()
records = list_obj.to_dict('records')
print(records)
Возвращает желаемый результат, как указано выше.