Python 如何从具有特定标题的给定列表中创建dataframe列表

Python 如何从具有特定标题的给定列表中创建dataframe列表,python,python-3.x,dataframe,Python,Python 3.x,Dataframe,我正在使用数据框中列品牌上的分组,其中列承运人等于字符串DHL: 主要目的: Carrier,brand,store,order_id,tracking_id DHL,HP,UK,2722,67920 USP,HP,UK,2918,17820 DHL,HP,US,2122,47920 DHL,DELL,SG,17229,75127 USP,HP,UK,2908,67820 DHL,DELL,UK,2201,24520 我正在尝试获取此输出(在“品牌”列上拆分): 拆分单元df1: DHL,HP

我正在使用
数据框中
品牌
上的
分组,其中
承运人等于字符串
DHL

主要目的:

Carrier,brand,store,order_id,tracking_id
DHL,HP,UK,2722,67920
USP,HP,UK,2918,17820
DHL,HP,US,2122,47920
DHL,DELL,SG,17229,75127
USP,HP,UK,2908,67820
DHL,DELL,UK,2201,24520
我正在尝试获取此输出(在“品牌”列上拆分):

拆分单元df1:

DHL,HP,UK,2722,67920
DHL,HP,US,2122,47920
DHL,HP,UK,2722,67920
DHL,HP,US,2122,47920
拆分df2:

DHL,DELL,SG,17229,75127
DHL,DELL,UK,2201,24520
DHL,DELL,SG,17229,75127
DHL,DELL,UK,2201,24520
这是我的密码

def split_csv():
    print(base_path)
    tracking_df = pd.read_csv(os.path.join(base_path,tracking_ids_csv))
    carrier_split_df = tracking_df.loc[tracking_df['Carrier']=='DHL']
    headers = carrier_split_df.columns.tolist()
    print(headers)
    brand_split_df = [index[1] for index in carrier_split_df.groupby(['brand'])] 
    for i in range(len(brand_split_df)): # This gives me a list
        print(brand_split_df[i])
    df = pd.DataFrame()
    for i in range(len(brand_split_df)):
        df[i] = pd.DataFrame(brand_split_df[i],columns=headers) # error here
    return df[i]
这个
for循环
给出了正确的输出,但它在
列表中
, 如何将此列表分成单独的
数据帧

for i in range(len(brand_split_df)): # This gives me a list
        print(brand_split_df[i])
输出:

拆分单元df1:

DHL,HP,UK,2722,67920
DHL,HP,US,2122,47920
DHL,HP,UK,2722,67920
DHL,HP,US,2122,47920
拆分df2:

DHL,DELL,SG,17229,75127
DHL,DELL,UK,2201,24520
DHL,DELL,SG,17229,75127
DHL,DELL,UK,2201,24520

将所选内容分组后,使用列表理解提取组:

groups = df[df.Carrier=='DHL'].groupby('brand')
df1, df2 = [group for _,group in groups]
或者,您可能希望有一个数据帧字典,而不是两个变量:

d = {key: group for key,group in groups}

你犯的错误就在这条线上

df[i] = pd.DataFrame(brand_split_df[i],columns=headers) # error here
这是因为df是一个数据帧,所以实际上需要df[i]是数据帧

# df = pd.DataFrame() # wrong
df=[pd.DataFrame(),pd.DataFrame()] # what will solve the error
暗示

我在一个数据帧中通过列品牌分组,其中列载体等于一个字符串DHL:

我想您只需要一个数据框,它只有
DHL
,并按
品牌进行排序

def split_csv():
    df = pd.read_csv('test.csv')
    new_df=df[df['Carrier']=="DHL"].sort_values(by=['brand'])
    return new_df.reset_index().drop(['index'],axis=1)
我希望这就是你想要的


编辑:如果是数据帧分割,那么它在@DYZ的答案中。我需要将数据帧分割成两个DELL和HP,其中DHL Carrier是常量