Как я могу объединить строки, чтобы номера одного столбца были больше или равны нулю, а другие ключи совпадали?Python

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

Сообщение 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

Раньше я использовал сводные таблицы для группировки элементов и вручную связывания их, но это длительный процесс, поэтому хотелось бы автоматизировать его, если это возможно.
Настройка
Ввод
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
Ответить

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

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

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

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

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