Узнать разницу в двух данных с одинаковым столбцом pandas - PullRequest
1 голос
/ 11 января 2020

У меня есть три кадра данных, как показано ниже

df1:

Unit_ID        Price
1              10
2              20
3              10

через один день df1 обновляется как df2, как показано ниже.

df2:

Unit_ID        Price
1              10
2              20
3              10
4              15
5              20

через один день с того дня df2 обновляется как df3, как показано ниже. Я хотел бы узнать новую единицу в текущем кадре данных, как показано ниже.

df3:

Unit_ID        Price
1              10
2              20
3              10
4              15
5              20
6              80

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

Например, при первом обновлении он должен располагаться ниже фрейма данных

df:

Unit_ID        Price
4              15
5              20

В следующем обновлении он должен возвратить следующий фрейм данных

df:

Unit_ID        Price
6              80

шаги 1. Убедитесь, что в каждом фрейме данных Unit_ID уникален. 2. Узнайте новый Unit_ID в текущей таблице.

1 Ответ

1 голос
/ 11 января 2020

Для каждого дня необходимо скопировать DataFrame в новый:

df1 = df.copy()

и после добавления новых строк вы можете использовать тестовое членство по Series.isin с инвертированной маской по ~:

df_added = df[~df['Unit_ID'].isin(df1['Unit_ID'])]

Проверочное решение:

print (df2)
   Unit_ID  Price
0        1     10
1        2     20
2        3     10
3        4     15
4        5     20

print (df3)
   Unit_ID  Price
0        1     10
1        2     20
2        3     10
3        4     15
4        5     20
5        6     80

df_added = df3[~df3['Unit_ID'].isin(df2['Unit_ID'])]
print (df_added)
   Unit_ID  Price
5        6     80
...