Python Pandas DataFrame.compare. Ошибка: не удается найти атрибут "сравнение" для DataFrame - PullRequest
0 голосов
/ 02 августа 2020

Я нашел функцию compare в Pandas документации:

pandas.DataFrame.compare
DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False)

Source

   def New_names(self, df_old, df_new):

    #New records for insert
    df_old_names = set(df_old['name'])
    df_new_names = set(df_new['name'])

    difference = df_new_names - df_old_names
    coincidence = df_old_names - difference

    exit_insert = df_new[df_new['name'].isin(difference)]

    #Check old records

    df_old_names_restrict = df_old[df_new.columns]

    exit_update = df_new.compare(df_old_names_restrict)
    

    return (exit_insert, exit_update)

Но она вызывает:

Traceback (most recent call last):   File
"C:/Users/shulya403/Shulya403_works/all_gid_2/Database/db_insert_pd.py",
line 203, in <module>
 FillDB.Pruducts_to_SQL(df_new=FillDB.df_Products.head(20))   File "C:/Users/shulya403/Shulya403_works/all_gid_2/Database/db_insert_pd.py",
line 184, in Pruducts_to_SQL
    df_select = self.New_names(self.Select_SQL_Products(), df_new)[0]   File
"C:/Users/shulya403/Shulya403_works/all_gid_2/Database/db_insert_pd.py",
line 175, in New_names
    exit_update = df_new.compare(df_old_names_restrict)   File "C:\Users\shulya403\Shulya403_works\all_gid_2\venv\lib\site-packages\pandas\core\generic.py",
line 5274, in __getattr__
    return object.__getattribute__(self, name) AttributeError: 'DataFrame' object has no attribute 'compare'

1 Ответ

0 голосов
/ 03 августа 2020

Какой у вас pd.__version__? В документации говорится, что этот метод является новым в 1.1.0 - RichieV

ДА, он работает! pd.__version__ было 1.0.5

pip install pandas --upgrade, и «сравнить» работает правильно.

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