Ищете способ сгруппировать строки так, чтобы столбцы совпадали, а номера одного столбца были больше или равны нулю в PytPython

Программы на Python
Ответить
Anonymous
 Ищете способ сгруппировать строки так, чтобы столбцы совпадали, а номера одного столбца были больше или равны нулю в Pyt

Сообщение Anonymous »

Это мой первый пост здесь. Надеюсь, я предоставил вам нужную информацию, которая поможет вам.

У меня написана длинная программа на Python/Pandas, которая работает нормально, но я хочу точно настроить один ее элемент.

Я работаю над проектом, позволяющим объединить элементы в разных физических областях для максимальной оптимизации области.

Итак, у меня есть список предметов с различным статусом, типами и областями, хранящимися вместе с количеством этого предмета в этой конкретной области. У каждой области также есть соответствующее количество, которое можно хранить там, пока оно не заполнится.

Я хотел бы связать элементы вместе, чтобы они были объединены таким образом, чтобы область с наименьшим количеством объединялась с областью, в которой осталось как минимум такое же количество упаковок, доступных для заполнения. Мне также нужно, чтобы статус и тип совпадали, чтобы область соответствовала.

Было бы идеально, если бы это было представлено в виде фрейма данных, чтобы фрейм данных выводил список возможных ходов, удовлетворяющих приведенному выше утверждению.

см. пример набора данных/кода ниже:

Код: Выделить всё

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)
df.set_index("ITEM NUMBER", inplace=True)
print(df)
Исходя из вышеуказанных условий, позиция 100 из области A04 должна объединиться с областью A01, поскольку она имеет тот же номер позиции, статус и тип, что и в настоящее время хранящаяся в области A01, а количество в области A04 меньше, чем упаковок для заполнения области A01. То же самое относится и к двум другим элементам в приведенном ниже примере фрейма данных:

Код: Выделить всё

data = {
'ITEM NUMBER': [100, 105, 100],
'STATUS': ["OK", "OK", "NG"],
'TYPE': ["RED", "YELLOW", "BLACK"],
'AREA': ['A04', 'B05', "A06"],
'MOVE TO': ['A01', "B01", "A03"]

}

df = pd.DataFrame(data)
df.set_index("ITEM NUMBER", inplace=True)
print(df)
Раньше я использовал сводные таблицы для группировки элементов и связывания областей вручную, но это длительный процесс, поэтому я хотел бы автоматизировать его, если это возможно.

спасибо.

Подробнее здесь: https://stackoverflow.com/questions/607 ... bers-of-on
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»