Как отследить любые изменения одного столбца в двух фреймах данных - панды - PullRequest
0 голосов
/ 10 октября 2018

У меня есть два DF, и я хочу сравнить изменения в значениях в DF1 и DF2.Я знаю, что мне нужно объединить два, чтобы у меня выстроились столбцы Status, но я также хотел бы вывести только идентификаторы, которые имели какие-либо изменения в статусе.

DF1:

ID    Status 
1234  Cleared
5678  Validating
4321  Pending
8765  Cleared
9876  Blocked
6789  Blocked

DF2:

ID    Status 
1234  Blocked
5678  Validating
4321  Pending
8765  Cleared
9876  Validating
6789  Blocked

Вывод:

 ID    Status1   Status2
    1234  Cleared   Blocked
    9876  Blocked   Validating

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Возможно, это не самый эффективный способ, но, по крайней мере, достичь цели.:)

df3 = df1.copy()
df3['Status_df2'] = df2.Status.copy()
df3 = df3.loc[df3.Status != df3.Status_df2]
0 голосов
/ 10 октября 2018

Пример данных:

df1 = pd.DataFrame(['Cleared', 'Validating', 'Pending', 'Cleared', 'Blocked', 'Blocked'], index = [1234, 5678, 4321, 8765, 9876, 6789], columns=['Status'])
df1.index.name = 'ID'

df2 = pd.DataFrame(['Blocked', 'Validating', 'Pending', 'Cleared', 'Validating', 'Blocked'], index = [1234, 5678, 4321, 8765, 9876, 6789], columns = ['Status'])
df2.index.name = 'ID'

Соедините df1 и df2, предоставляя суффиксы для столбцов в объединенном фрейме данных

df = df1.join(df2, lsuffix='_1', rsuffix='_2')

, а затем используйте логическое индексирование

df[df.Status_1 != df.Status_2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...