Группировка нескольких индексов и добавление ключей группировки python

У меня есть набор данных в .csv, как показано ниже, я хочу использовать python для создания группы и добавления одного столбца как internal_id.

входной файл

unq_id  name    city    country   supplier
053     ABC     CAL     UA        sup_01
054     DEF     NY      UA        sup_01
055     ABC     CAL     UA        sup_02
056     ABC     CAL     UA        sup_03
057     DEF     NY      UA        sup_02

выходной файл должен быть новым .csv файлом

 internal_id   unq_id     supplier
 001           053        sup_01    
 001           055        sup_02
 001           056        sup_03
 002           054        sup_01
 002           057        sup_02

Расскажите подробнее о том, что вы пробовали до сих пор и с какими проблемами вы столкнулись, и вам нужна помощь.

Ondrej K. 06.06.2018 14:05

Извините, я новичок в Python. Я сделал "df.groupby ('name')" и получил результат с группировкой имен, но на самом деле я хочу сделать groupby с 3 столбцами, которые являются 'name', 'city', 'county'. Затем добавьте internal_id для той же группы, что и упомянутый мной выходной файл. Не могли бы вы подсказать мне пример кода на Python, чтобы я мог попробовать? Благодарить!

GDern Lwin 06.06.2018 14:16
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать это с помощью Pandas и Категориальные данные:

import pandas as pd

# read file
df = pd.read_csv('file.csv')

# define key columns
key_cols = ['name', 'city', 'country']

# convert to integer category codes
df['cat'] = df[key_cols].apply(tuple, axis=1).astype('category').cat.codes

# add one, convert to string, and format
df['cat'] = (df['cat'] + 1).apply(str).str.zfill(3)

# filter columns
res = df[['cat', 'unq_id', 'supplier']]

# output result to csv
res.to_csv('file_out.csv', index=False)

print(res)

   cat  unq_id supplier
0  001      53   sup_01
1  002      54   sup_01
2  001      55   sup_02
3  001      56   sup_03
4  002      57   sup_02

Другие вопросы по теме