簡體   English   中英

to_csv未寫入更新的DataFrame

[英]to_csv is not writing the updated DataFrame

我正在導入一個csv文件作為pandas DataFrame。 然后更新該DataFrame,我試圖通過覆蓋該文件將該信息寫回到原始csv文件。 代碼完成后,我可以看到文件保存時間已更新,因此它似乎已保存了新版本。 但是,當我打開文件時,沒有任何改變。 我已經運行了print語句,以確保DataFrame的值實際上已經被更新並且它們看起來是正確的。 為什么to_csv不發送更新的DataFrame?

self.site_data=pandas.read_csv("site_data.csv",index_col=0, keep_default_na=False)
self.site_data.loc[location,"ADDRESS"] = self.location_details["site_address"]
print(self.site_data.loc[location,"ADDRESS"])
self.site_data.to_csv("site_data.csv", encoding="latin")

因此,問題比我想象的要深得多,因此,原因未在我發布的代碼中得到體現,但值得慶幸的是,這很容易解決。 我的程序中有多個類,其中兩個創建對象

self.site_data=pandas.read_csv("site_data.csv",index_col=0, keep_default_na=False)

初始化時。 這是一個示例,盡管這不是實際的代碼:

from example_1 import mass_analysis
from example_2 import mass_import

class mass_analysis:
    def __init__(self):
        self.site_data=pandas.read_csv("site_data.csv",index_col=0, keep_default_na=False)

class mass_import:
    def __init__(self):
        self.site_data=pandas.read_csv("site_data.csv",index_col=0, keep_default_na=False)

class mass_main_ui:
    def __init__(self):
        mass_analysis=mass_analysis()
        mass_import=mass_import()        

因此,在初始化mass_main_ui時,兩個類都同時訪問文件並在該變量中保存相同的數據。 當第一個將數據寫回到文件中時,文件/變量的另一個實例仍處於“打開”狀態,因此當該實例寫回到文件時,它沒有第一個的更改並覆蓋了所有內容它做到了。 解決方法是刪除:

mass_analysis=mass_analysis()

mass_import=mass_import()

從初始化開始,而是在程序中的其他函數中在需要時調用該類,例如:

mass_import().get_new_data(source_file)

def get_new_data(source_file):
    print("This works")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM