[英]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.