我正在将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")
答案 0 :(得分:0)
所以这个问题比我想象的要深得多,所以原因没有在我发布的代码中表现出来,但幸好这是一个简单的修复。我的程序中有多个类,其中两个创建对象
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")