Как очистить старые данные для словаря фреймов данных? - PullRequest
0 голосов
/ 16 июня 2020

Это фрагмент моего кода. Мне нужно очистить один день от старых данных. как это сделать для словаря фреймов данных?

    master_train_dict = {}
    for id in list_of_id:
        temp_df = df.loc[df["id"] == id].copy(deep=False)
        temp_df.drop('id', axis=1, inplace=True)
        temp_df.reset_index(drop=True, inplace=True)
        alert_list = list(temp_df["title"])
        train_embedding = get_embeddings(alert_list, model)
        temp_df["train_embedding"] = train_embedding
        master_train_dict[parent_id] = 
        temp_df[["title","train_embedding","@timestamp"]]
        #master_train_dict[parent_id] = temp_df
    global master_dict
master_dict = master_train_dict    
print(master_dict)
#clean up function
if len(master_dict)>0:
    d = datetime.today() - timedelta(hours=1, minutes= 0)
    master_dict=master_dict[id]['@timestamp']>d.strftime("%Y-%m-%d %H:%M:%S")
    print(master_dict)

1 Ответ

0 голосов
/ 16 июня 2020

Рассмотрите возможность работы в определенных методах и используйте groupby для построения списка или dict разделенных фреймов данных. Затем вызывайте функции с помощью словаря.

def build_df(sub):
   sub_df.drop('id', axis=1, inplace=True)
   sub_df.reset_index(drop=True, inplace=True)

   alert_list = list(sub_df["title"])
   train_embedding = get_embeddings(alert_list, model)

   sub_df["train_embedding"] = train_embedding
   sub_df = sub_df.reindex(["title","train_embedding","@timestamp"], axis="columns")

   return sub_df

master_train_dict = {i:build_df(g) for i, g in df.groupby(["id"])}


def clean_df(df):        
    d = datetime.today() - timedelta(hours=1, minutes= 0)
    df = df[df['@timestamp'] > d.strftime("%Y-%m-%d %H:%M:%S")]   

    return df 

clean_master_train_dict = {k:clean_df(v) for k, v in master_train_dict.items()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...