Я работаю над проектом, позволяющим объединить элементы в разных физических областях для максимальной оптимизации области.
У меня есть список элементов с разными статусами, типами и областями, а также количество этих элементов в этой конкретной области. У каждой области также есть связанное количество, которое можно хранить там до тех пор, пока она не заполнится.
Я хотел бы связать элементы вместе, чтобы они были объединены таким образом, чтобы область с наименьшим количеством объединялась с областью, в которой осталось как минимум такое же количество упаковок, доступных для заполнения. Мне также нужно, чтобы статус и тип совпадали, чтобы область соответствовала.
Было бы идеально, если бы это было представлено в виде фрейма данных, содержащего список возможных ходов, удовлетворяющих приведенному выше утверждению.
пример набора данных:
STATUS TYPE AREA QUANTITY PACKS TO FILL
ITEM NUMBER
100 OK RED A01 5 10
105 OK YELLOW B01 15 5
100 NG RED A02 8 2
100 NG BLACK A03 4 6
100 OK RED A04 9 1
100 OK BLACK A05 2 8
105 OK YELLOW B02 19 1
105 NG YELLOW B03 20 0
105 OK RED B04 3 17
105 OK YELLOW B05 4 16
100 NG BLACK A06 1 9
Исходя из вышеуказанных условий, позиция 100 из области А04 должна объединиться с областью А01, так как количество в области А04 меньше, чем упаковок для заполнения области А01, и она имеет тот же номер позиции, статус и тип. То же самое относится и к двум другим элементам в примере вывода ниже:
STATUS TYPE AREA MOVE TO
ITEM NUMBER
100 OK RED A04 A01
105 OK YELLOW B05 B01
100 NG BLACK A06 A03
Раньше я использовал сводные таблицы для группировки элементов и вручную связывания их, но это длительный процесс, поэтому хотелось бы автоматизировать его, если это возможно.
Настройка
Ввод
import pandas as pd
data = {
'ITEM NUMBER': [100, 105, 100, 100, 100, 100, 105, 105, 105, 105, 100],
'STATUS': ["OK", "OK", "NG", "NG", "OK", "OK", "OK", "NG", "OK", "OK", "NG"],
'TYPE': ["RED", "YELLOW", "RED", "BLACK", "RED", "BLACK", "YELLOW", "YELLOW", "RED", "YELLOW", "BLACK"],
'AREA': ['A01', 'B01', "A02", "A03", "A04", "A05", "B02", "B03", "B04", "B05", "A06"],
'QUANTITY': [5, 15, 8, 4, 9, 2, 19, 20, 3, 4, 1],
'PACKS TO FILL': [10, 5, 2, 6, 1, 8, 1, 0, 17, 16, 9]}
df = pd.DataFrame(data).set_index("ITEM NUMBER")
Вывод
data_o = {
'ITEM NUMBER': [100, 105, 100],
'STATUS': ["OK", "OK", "NG"],
'TYPE': ["RED", "YELLOW", "BLACK"],
'AREA': ['A04', 'B05', "A06"],
'MOVE TO': ['A01', "B01", "A03"]}
df_o = pd.DataFrame(data).set_index("ITEM NUMBER")
Подробнее здесь: https://stackoverflow.com/questions/607 ... r-equal-to
Как я могу объединить строки, чтобы номера одного столбца были больше или равны нулю, а другие ключи совпадали? ⇐ Python
Программы на Python
1763989142
Anonymous
Я работаю над проектом, позволяющим объединить элементы в разных физических областях для максимальной оптимизации области.
У меня есть список элементов с разными статусами, типами и областями, а также количество этих элементов в этой конкретной области. У каждой области также есть связанное количество, которое можно хранить там до тех пор, пока она не заполнится.
Я хотел бы связать элементы вместе, чтобы они были объединены таким образом, чтобы область с наименьшим количеством объединялась с областью, в которой осталось как минимум такое же количество упаковок, доступных для заполнения. Мне также нужно, чтобы статус и тип совпадали, чтобы область соответствовала.
Было бы идеально, если бы это было представлено в виде фрейма данных, содержащего список возможных ходов, удовлетворяющих приведенному выше утверждению.
пример набора данных:
STATUS TYPE AREA QUANTITY PACKS TO FILL
ITEM NUMBER
100 OK RED A01 5 10
105 OK YELLOW B01 15 5
100 NG RED A02 8 2
100 NG BLACK A03 4 6
100 OK RED A04 9 1
100 OK BLACK A05 2 8
105 OK YELLOW B02 19 1
105 NG YELLOW B03 20 0
105 OK RED B04 3 17
105 OK YELLOW B05 4 16
100 NG BLACK A06 1 9
Исходя из вышеуказанных условий, позиция 100 из области А04 должна объединиться с областью А01, так как количество в области А04 меньше, чем упаковок для заполнения области А01, и она имеет тот же номер позиции, статус и тип. То же самое относится и к двум другим элементам в примере вывода ниже:
STATUS TYPE AREA MOVE TO
ITEM NUMBER
100 OK RED A04 A01
105 OK YELLOW B05 B01
100 NG BLACK A06 A03
Раньше я использовал сводные таблицы для группировки элементов и [b]вручную[/b] связывания их, но это длительный процесс, поэтому хотелось бы автоматизировать его, если это возможно.
Настройка
Ввод
import pandas as pd
data = {
'ITEM NUMBER': [100, 105, 100, 100, 100, 100, 105, 105, 105, 105, 100],
'STATUS': ["OK", "OK", "NG", "NG", "OK", "OK", "OK", "NG", "OK", "OK", "NG"],
'TYPE': ["RED", "YELLOW", "RED", "BLACK", "RED", "BLACK", "YELLOW", "YELLOW", "RED", "YELLOW", "BLACK"],
'AREA': ['A01', 'B01', "A02", "A03", "A04", "A05", "B02", "B03", "B04", "B05", "A06"],
'QUANTITY': [5, 15, 8, 4, 9, 2, 19, 20, 3, 4, 1],
'PACKS TO FILL': [10, 5, 2, 6, 1, 8, 1, 0, 17, 16, 9]}
df = pd.DataFrame(data).set_index("ITEM NUMBER")
Вывод
data_o = {
'ITEM NUMBER': [100, 105, 100],
'STATUS': ["OK", "OK", "NG"],
'TYPE': ["RED", "YELLOW", "BLACK"],
'AREA': ['A04', 'B05', "A06"],
'MOVE TO': ['A01', "B01", "A03"]}
df_o = pd.DataFrame(data).set_index("ITEM NUMBER")
Подробнее здесь: [url]https://stackoverflow.com/questions/60783326/how-can-i-merge-rows-so-that-numbers-of-one-column-are-greater-than-or-equal-to[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия