Я относительно новичок в python, но я использовал Wes Kinney's «Python for Data Analysis» религиозно в течение последних нескольких недель. Я потратил часы, пытаясь найти решение моей текущей проблемы, но мне нужна помощь. Однако у меня есть набор данных, содержащий данные для отправок, отправленных в этом календарном году; поскольку я получаю новые данные каждый месяц, некоторые детали могут быть изменены. Я выяснил, как идентифицировать измененные отправления, а также как определить, какие изменения могут быть.Подсчет сходства между двумя кадрами данных pandas
Итак, допустим, я определил, что эти поставки (в dataframe, оригинал) изменились:
ID Code Mode Amount From To Weight Cube Service_Date
MNO123 BBB Air 50 M1234 M9876 60 6 1-1-2013
GHI123 AAA Air 50 M1234 M9876 80 8 1-1-2013
JKL123 AAA Ship 50 M1234 M9876 70 7 1-1-2013
И я определил возможные изменения (в dataframe, изменения), как:
ID Code Mode Amount From To Weight Cube Service_Date
MNO123 BBB Air 50 M1234 M9876 60 6 2-2-2013
MNO123 BBB Air 60 M1234 M9876 60 6 2-2-2013
MNO123 BBB Air 70 M1234 M1111 60 6 2-2-2013
GHI123 AAA Air 65 M1234 M9876 80 8 1-1-2013
JKL123 AAA Ship 65 M1234 M9876 70 7 1-1-2013
JKL123 AAA Ship 65 M1234 M9876 70 8 1-1-2013
Все, что я пытаюсь сделать, это добавить столбец count к изменениям dataframe, который суммирует количество значений, соответствующих соответствующим значениям в исходном фрейме. Поэтому, поскольку соответствие кода, режима, количества, от, до, веса и куба, столбец count получит значение 7 для первого наблюдения. Аналогичным образом, но имеющие один меньше соответствующее значение, второе наблюдение будет иметь значение счетчика 6, а третий будет иметь значение счетчика 5.
Результат Ищу выглядит следующим образом:
ID Code Mode Amount From To Weight Cube Service_Date Count
MNO123 BBB Air 50 M1234 M9876 60 6 2-2-2013 7
MNO123 BBB Air 60 M1234 M9876 60 6 2-2-2013 6
MNO123 BBB Air 70 M1234 M1111 60 6 2-2-2013 5
GHI123 AAA Air 65 M1234 M9876 80 8 1-1-2013 7
JKL123 AAA Ship 65 M1234 M9876 70 7 1-1-2013 7
JKL123 AAA Ship 65 M1234 M9876 70 8 1-1-2013 6
Пройдя через книгу Уэса и многочисленные несколько похожие сообщения на этом сайте, я считаю, что мне нужно использовать df.iterrows()
, но я борюсь с процессом, чтобы перебирать оба кадра данных, а также проверять и подсчитывать соответствующие значения.
Это была моя последняя попытка:
for i in changes.iterrows():
for i in original.iterrows():
changes['count'] = 0
if changes(i) == original(i):
changes['count'] +=1
Заранее спасибо за ваше время и усилия!
Этот фрагмент кода не работает, поскольку счетчик сбрасывается во время каждой исходной строки. –
Можете ли вы привести пример с DataFrame с более чем одной строкой, неясно, будет ли это работать (как, например, я говорю, ваш пример кода не), и каков должен быть результат. –
@ AndyHayden, я добавил дополнительные строки в оба DataFrames, а также добавил результат, который я ищу. Сообщите мне, есть ли что-нибудь еще, что я могу сделать, чтобы помочь вам помочь. –