为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2021-10-19 16:19:22
我在数据框中有一个 Excel 文件old_df,我通过从另一个 Excel 文件数据框中添加新内容来使数据保持最新new_df。pd.concat如果新数据帧中的日期之一在旧数据帧中不存在,我只是将新帧和旧帧放在一起。目前该文件中的一些重要列是:Pub Date      Forecast Time   Forecast Date   State   Temp2018-12-12    23:00:00        2018-12-20      AK      32018-12-12    02:00:00        2018-12-20      AK      3.22018-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然后跳过并继续写入所有其他不存在的行,并且仅当所有这些组合已经存在时才退出。是否有捷径可寻?
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您还可以使用:


df.append(df1,ignore_index=True).drop_duplicates(subset=['Pub Date','Forecast Time','Forecast Date','State'])

将两个数据帧视为:


df :


    Pub Date Forecast Time Forecast Date State  Temp

0 2018-12-12      23:00:00    2018-12-20    AK   3.0

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

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

df1:


    Pub Date Forecast Time Forecast Date State  Temp

0 2018-12-12      23:00:00    2018-12-20    AK   3.0

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

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


df.append(df1,ignore_index=True).drop_duplicates(subset=['Pub Date','Forecast Time','Forecast Date','State'])


    Pub Date Forecast Time Forecast Date State  Temp

0 2018-12-12      23:00:00    2018-12-20    AK   3.0

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

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

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

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

基本上仅基于某些列附加数据帧和删除重复项 ['Pub Date','Forecast Time','Forecast Date','State']


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信