小编shu*_*403的帖子

Python Pandas DataFrame.compare。错误:找不到 DataFrame 的属性“比较”

compare我在 Pandas 文档中找到了该函数:

pandas.DataFrame.compare
DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False)
Run Code Online (Sandbox Code Playgroud)

来源

   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)
Run Code Online (Sandbox Code Playgroud)

但它会引发以下错误:

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 = …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

1
推荐指数
1
解决办法
1万
查看次数

用于 cyrlic 数据的 SQLAlchemy 插入 MySQL DB UnicodeEncodeError

我将 Python.SQLAlchemy 与 MySQL 数据库一起使用。所有代码都适用于数据中的拉丁符号,但不适用于西里尔文:

UnicodeEncodeError: 'charmap' 编解码器无法对位置 0-17 中的字符进行编码:字符映射到

我在引擎构造函数中添加了“encoding='utf8', convert_unicode=True”但没有什么可改变的

MySQL 中表的字符集/排序规则:utf8 / utf8-bin

代码:

数据库连接

    def DB_alchemy(self, category, db="mysql://user:pass@localhost/all_gid_2"):
    self.sql_engine = sql.create_engine(db, echo=True, encoding='utf8', convert_unicode=True)

    metadata = sql.MetaData(self.sql_engine)

    sql_tbl_name_products = category+'_products'
    sql_tbl_name_class = category + '_classes'

    self.tbl_products = sql.Table(sql_tbl_name_products, metadata, autoload=True)
    self.tbl_classes = sql.Table(sql_tbl_name_class, metadata, autoload=True)

    self.connection = self.sql_engine.connect()
Run Code Online (Sandbox Code Playgroud)

....

插入

def Insert_df_to_SQL(self, df, tbl):

        dict_insert = df.to_dict(orient='records')

        insert_qry = tbl.insert()
        self.connection.execute(insert_qry, dict_insert)
Run Code Online (Sandbox Code Playgroud)

SQLAlchemy 引擎在西里尔数据中的回显:

2020-08-02 22:07:05,839 INFO sqlalchemy.engine.base.Engine INSERT INTO Nb_classes(类型、class_subtype、文本、解释、名称)值(%s、%s、%s、%s、%s)2020- 08-02 22:07:05,840 信息 sqlalchemy.engine.base.Engine …

mysql encoding sqlalchemy python-3.x pandas

1
推荐指数
1
解决办法
746
查看次数

标签 统计

pandas ×2

dataframe ×1

encoding ×1

mysql ×1

python ×1

python-3.x ×1

sqlalchemy ×1