用于更新数据帧 Python 中现有数据的检查器

我在数据框中有一个 Excel 文件old_df,我通过从另一个 Excel 文件数据框中添加新内容来使数据保持最新new_df。pd.concat如果新数据帧中的日期之一在旧数据帧中不存在,我只是将新帧和旧帧放在一起。


目前该文件中的一些重要列是:


Pub Date      Forecast Time   Forecast Date   State   Temp

2018-12-12    23:00:00        2018-12-20      AK      3

2018-12-12    02:00:00        2018-12-20      AK      3.2

2018-12-12    05:00:00        2018-12-20      AK      2.9

.

.

我想确保我通关重复行,当我更新此旧的文件与新的数据-跳跃的非唯一实例Pub Date有Forecast Time,Forecast Date和State。


现在我正在使用一个非常糟糕的方法,通过获取Pub Dates新旧列表:


dateList_old = date_old.tolist()

dateList_new = date_new.tolist()


result = any(elm in dateList_new for elm in dateList_old)


if result == True:

    print('One or more of the dates already exists in the database')

    sys.exit()


else:


    frames = [old_df,new_df]


    result = pd.concat(frames)

    result.to_excel("file", encoding="utf-8", index=False)

但这会遇到问题,因为如果我要添加Pub Date任何类型的相同内容 - 它会退出整个写入。


我想这样做,如果Pub Date + Forecast Time + Forecast Date + State在old_df然后跳过并继续写入所有其他不存在的行,并且仅当所有这些组合已经存在时才退出。


是否有捷径可寻?


泛舟湖上清波郎朗
浏览 162回答 2
2回答

皈依舞

您还可以使用:df.append(df1,ignore_index=True).drop_duplicates(subset=['Pub Date','Forecast Time','Forecast Date','State'])将两个数据帧视为:df :    Pub Date Forecast Time Forecast Date State  Temp0 2018-12-12      23:00:00    2018-12-20    AK   3.01 2018-12-12      02:00:00    2018-12-20    AK   3.22 2018-12-12      05:00:00    2018-12-20    AK   2.9df1:    Pub Date Forecast Time Forecast Date State  Temp0 2018-12-12      23:00:00    2018-12-20    AK   3.01 2018-12-13      02:00:00    2018-12-20    AK   3.22 2018-12-13      05:00:00    2018-12-20    AK   2.9df.append(df1,ignore_index=True).drop_duplicates(subset=['Pub Date','Forecast Time','Forecast Date','State'])    Pub Date Forecast Time Forecast Date State  Temp0 2018-12-12      23:00:00    2018-12-20    AK   3.01 2018-12-12      02:00:00    2018-12-20    AK   3.22 2018-12-12      05:00:00    2018-12-20    AK   2.94 2018-12-13      02:00:00    2018-12-20    AK   3.25 2018-12-13      05:00:00    2018-12-20    AK   2.9基本上仅基于某些列附加数据帧和删除重复项 ['Pub Date','Forecast Time','Forecast Date','State']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python