繁体   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