如何在Python中使用具有相同ID的新记录更新csv

我需要更新本地文件夹中具有相同 ID 的预先存在的 CSV。让我详细阐述一下这个问题。


df1:


Item_id  Country  Compay

   1     Germany  sitz.co

   2              likrds.co

   3     Denmark  Axitr.co

   4     Italy

这是我的 df1,我想将此文件作为 CSV 导出到我的文件夹中。所以我这样做了,


df1.to_csv(r'folder_path\df1.csv',index=False)

所以此时,我的文件夹中有 df1。假设我有 df2 和新的 item_ids 以及 df1 中的一些 item_ids。我想将 df2 附加到同一个文件中,如果该文件包含类似的 item_ids,它应该更新预先存在的记录,并将新的 item_ids 记录附加到该 CSV 中。


df2:


Item_id  Country   Compay

   11    Argentina sitz.co

   2     Russia    likrds.co

   13    Denmark   Axitr.co

   4     Italy     ghrx.co


df2.to_csv(r'folder_path\df1.csv',mode='a',index=False)

当我运行上面的代码时,我的 CSV 附加了重复的记录,但我需要根据项目 ID 使用新记录更新记录。


所需_csv:


Item_id  Country   Compay

   1     Germany   sitz.co

   2     Russia    likrds.co

   3     Denmark   Axitr.co

   4     Italy     ghrx.co

   11    Argentina sitz.co

   13    Denmark   Axitr.co


慕桂英4014372
浏览 124回答 2
2回答

收到一只叮咚

glob这是使用和 的解决方案groupby+last:import globlist_of_files = glob.glob(r'folder_path\*.csv')dfs = [pd.read_csv(i) for i in list_of_files]output = pd.concat(dfs).groupby("Item_id",as_index=False).last()   Item_id    Country     Compay0        1    Germany    sitz.co1        2     Russia  likrds.co2        3    Denmark   Axitr.co3        4      Italy    ghrx.co4       11  Argentina    sitz.co5       13    Denmark   Axitr.co如果你只有 2 个数据框:l = [df1,df2]output = pd.concat(l).groupby("Item_id",as_index=False).last()

慕哥9229398

用于设置和DataFrame.set_index的索引,然后使用:df1df2Item_idDataFrame.combine_firstdf = df2.set_index('Item_id')\        .combine_first(df1.set_index('Item_id')).reset_index()结果:print(df)   Item_id    Country     Compay0        1    Germany    sitz.co1        2     Russia  likrds.co2        3    Denmark   Axitr.co3        4      Italy    ghrx.co4       11  Argentina    sitz.co5       13    Denmark   Axitr.co
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python