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是常量