У меня есть два набора данных, и я пытаюсь сравнить только один столбец на основе уникального идентификатора.Я хочу отслеживать и помечать любые изменения значений в этом столбце и выводить эти изменения в другой DF.
DF1:
ID Status
1234 Cleared
4321 Pending
5678 Distributed
8765 Validating
2468 Blocked
8642 Pending
1357 Pending
7531 Distributed
DF2:
ID Status
1234 Distributed
4321 Pending
5678 Pending
8765 Cleared
2468 Blocked
8642 Blocked
1357 Cleared
7531 Blocked
Вывод:
ID Status Status
1234 Cleared Distributed
5678 Distributed Pending
8765 Validating Cleared
8642 Pending Blocked
1357 Pending Cleared
7531 Distributed Blocked
Наконец, я также пытаюсь увидеть любые изменения в другом столбце на основе изменений в столбце состояния.Этот столбец содержит список стран, использующих стандартные коды стран ISO Alpha-2.Я думал о простом подсчете символов здесь, но это не имеет смысла, потому что, если US будет удален и заменен на DE, то количество символов останется прежним.
Мой код для всего этого (переназначенный из других вопросов здесь) следующий, но я чувствую, что, возможно, есть более эффективный способ сделать это ...
for index, compare_row in compare_df.iterrows():
row_df1 = df1.loc[df1['ID'] == compare_row['ID']]
row_df2 = df2.loc[df2['ID'] == compare_row['ID']]
if (row_df1.iloc[0]['Status'] != row_df2.iloc[0]['Status']):
print "here 1"
output_df.append(row_df1)
output_df.append(row_df2)
elif (row_df1.iloc[0]['Status'] in ['Cleared', 'Distributed']) & (row_df1.iloc[0]['Territory'] != row_df2.iloc[0]['Territory']):
print "here 2"
output_df.append(row_df1)
output_df.append(row_df2)