Удалить каждый фрейм данных pandas в финальном скрипте

#python-3.x #pandas #flask

#python-3.x #pandas #flask

Вопрос:

Я использую фреймы данных pandas в разных сценариях. Например:

script1.py :

 import pandas as pd
df1 = pd.read_csv("textfile1.csv")
"do stuff with df1 including copying some columns to use"
  

script2.py :

 import pandas 
df2 = pd.read_csv("textfile2.csv")
"do stuff with df2 including using .loc to grab some specific rows.
  

а затем использовать эти два фрейма данных (на самом деле я использую около 50 фреймов данных) в разных представлениях Flask и скриптах python. Однако, когда я захожу на домашнюю страницу моего приложения Flask и выполняю шаги по созданию нового результата на основе другого входного файла, результат продолжает выдавать мне старый (или первый) файл результатов на основе фреймов данных, которые он прочитал в первый раз.

Я пробовал (в основном в сочетании друг с другом):

- logout_user()

- session.clear()

- CACHE_TYPE=null

- gc.collect()

- SECRET_KEY = str(uuid.uuid4())

 - for var in dir():
    if isinstance(eval(var), pd.core.frame.DataFrame):
        del globals()[var]
  

Я не могу (читай: не должен) удалять фреймы данных pandas после их создания, поскольку все это взаимосвязано. Но я хотел бы, чтобы в конце последней страницы была кнопка, и если бы я щелкнул по ней, она удалила бы каждый фрейм данных pandas, который существует в каждом скрипте или в памяти. Возможно ли это? Надеюсь, это решит мою проблему.

Ответ №1:

Попробуйте с классом

 class Dataframe1():
    def __init__(self, data):
      self.data = data
d1 = Dataframe1(pd.read_csv("textfile1.csv"))
  

Если вы хотите получить доступ к данным

 d1.data
  

Чтобы удалить

 del d1
  

Комментарии:

1. Я попробовал это в правильном скрипте, и это сработало. Большое спасибо!