使用循环函数将数据帧过滤为数据帧列表

Dyl*_*ore 1 python for-loop pandas

我有一个小数据框,两列宽。我的目标是根据 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()
Run Code Online (Sandbox Code Playgroud)
KeyError: 'QE' 
Run Code Online (Sandbox Code Playgroud)

Dat*_*ice 5

使用列表理解和 groupby

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]
Run Code Online (Sandbox Code Playgroud)
print(dfs[1])

   Name          QE
0  Dave  12.31.2019
1   Sue  12.31.2019
2  John  12.31.2019
Run Code Online (Sandbox Code Playgroud)

在标准的 for 循环中,这将是

dfs = []
for _, dataframe in df.groupby('QE'):
    dfs.append(dataframe)
Run Code Online (Sandbox Code Playgroud)