我在熊猫中有两个数据框。其中一个是来自外部源的数据,另一个是来自mysql数据库的数据。两者都有相同的列(信息,日期,链接)。
我正在对其执行merge
查询,以便删除重复项,从某种意义上说,是将外部副本与数据库中已有的内容进行比较,然后将重复项删除到外部副本中,然后再插入数据库。
column_titles = [
'Title',
'PublishDate',
'ExternalUrl'
]
params_list = ['2018-07-01 00:00:00']
df = dbData.read(select_article_news_data(), column_titles, params_list)
df_content = df['data'].rename(columns={'Title': 'info','PublishDate' : 'date','ExternalUrl': 'link'})
sql_col_titles = [
'info',
'date',
'link'
]
sql_df = dbData.read(select_article_news_mysql(), sql_col_titles, None, mysql=True)
sql_df = sql_df['data']
df_all = df_content.merge(sql_df.drop_duplicates(), on=['info', 'date', 'link'],
how='left', indicator=True )
df_all = df_all.loc[df_all['_merge'] == 'left_only']
new_df = df_all.drop(columns=['_merge'])
new_df.to_sql(con=cnx, name='news', if_exists='append', index=False)
dbData.read
只需调用pandas read_sql
方法,并执行其他不相关的东西并返回二项式,结果集为df['data']
。
我遇到的错误是,最初运行脚本时,最初有306个条目。在此之后,当我再次运行它时,将得到404,这些额外的条目都是重复的。使用条件比较时,所有内容均为True
,因此应删除这些重复项。
我以前使用过这种方法,并且可以正常工作。我可以重命名df_content
的列名吗?