Как преобразовать словарь DataFrames в отдельные DataFrames (Python, Pandas) - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть оригинальный фрейм данных с 4 столбцами (для примера давайте назовем их product_id, year_month, week, order_amount) и> 50 000 строк. Существует 240 отдельных значений product_id, и каждое из них ведет себя по-разному в данных, поэтому я хотел создать отдельные кадры данных из исходного на основе отдельного product_id. Я смог сделать это, используя:

dict_of_productid = {k: v for k, v in df.groupby('product_id)}

, при этом был создан словарь, ключом которого является product_id, а значениями являются столбцы: product_id, year_month, week, order_amount. Каждый элемент в словаре также поддерживал индекс от оригинального df. например: если product_id = dvvd56 был в строке # 4035, то в словаре он будет в кадре данных, созданном для product_id dvvd56, но с индексом, все еще равным 4035.

То, что я застрял сейчас, это словарь с df в качестве значений, но не могу найти способ преобразовать эти значения в отдельные кадры данных, которые я могу использовать и манипулировать ими. Если есть способ сделать это, пожалуйста, дайте мне знать! Я буду очень благодарна. спасибо

1 Ответ

0 голосов
/ 23 апреля 2020

Я нашел способ go по этому поводу, но я не знаю, является ли это наиболее подходящим способом, но это может помочь для дальнейших ответов, чтобы уточнить, что я хочу сделать.

Первым шагом было преобразовать уникальные значения в список, а затем отсортировать их по порядку:

product_id_list = df['product_id'].value_counts().index.to_list()
product_id_list = sorted(product_id_list)

После этого я создал формулу, а затем повторил ее с отдельными значениями из product_id_list:

def get_df(key): 
    for k in key: 
        df_productid = dict_of_productid[k]
    return df_productid

for c, i in enumerate(product_id_list):
    globals()[f'df_{c}'] = get_df([f'{i}'])

это позволяет мне теперь разделить все значения словаря, который был создан, на отдельные кадры данных, которые я могу вызвать, без явного указания идентификатора продукта. Я могу просто сделать df_1 и получить фрейм данных.

(я не знаю, является ли это наиболее эффективным способом go по этому поводу)

...