Использование функции al oop для фильтрации фрейма данных в список фреймов данных - PullRequest
1 голос
/ 06 августа 2020

У меня небольшой фрейм данных шириной в два столбца. Моя цель - разделить этот фрейм данных на список фреймов данных на основе уникальных значений из столбца QE.

Кажется, я не могу найти ошибку в моем коде.

Отредактировано для ясности :

import pandas as pd

def Function1():
    data = {'Name': ['Dave', 'Sue', 'John', 'Dave', 'Michael', 'Sue'],
            'QE': ['12.31.2019', '12.31.2019', '12.31.2019', '03.31.2020', '03.31.2020', '03.31.2020']
            }
    df = pd.DataFrame(data, columns=['Name', 'QE'])
    
    Quarters = list(df['QE'].unique())
               
    dfs = []
    for x in Quarters:
        df = df[df['QE'] == x]
        df = df['Name'].reset_index(drop=True) 
        dfs.append(df)
    
    return df

a = Function1()
KeyError: 'QE' 

1 Ответ

4 голосов
/ 06 августа 2020

использовать понимание списка и группировку

dfs = [dataframe for _, dataframe in df.groupby('QE')]


print(dfs)

[      Name          QE
 3     Dave  03.31.2020
 4  Michael  03.31.2020
 5      Sue  03.31.2020,    Name          QE
 0  Dave  12.31.2019
 1   Sue  12.31.2019
 2  John  12.31.2019]
print(dfs[1])

   Name          QE
0  Dave  12.31.2019
1   Sue  12.31.2019
2  John  12.31.2019

в стандарте для l oop это будет

dfs = []
for _, dataframe in df.groupby('QE'):
    dfs.append(dataframe)
...