PANDAS通过唯一值行将数据帧拆分为多个

Dar*_*dav 8 python dataframe pandas

我在Pandas中有一个DataFrame

      PRICE   Name     PER   CATEGORY   STORENAME
0      9.99    MF      gram  Indica     Store1
1      9.99    HY      gram  Herb       Store2
2      9.99    FF      gram  Herb       Store2
Run Code Online (Sandbox Code Playgroud)

我想要做的是将它们分成多个数据框以具有唯一的名称,然后分成那些分类.

当前代码:

names = df['STORENAME'].unique().tolist()   #find unique values
store1 = df[df['STORENAME']==names[0]]        
store2 = df[df['STORENAME']==names[1]]
Run Code Online (Sandbox Code Playgroud)

这段代码完美无缺,但我想知道是否有Pythonic方式,因为商店的数量可能会改变.

这需要绘制商店中类别的价格差异.

谢谢!

jez*_*ael 12

我想你可以创造dictionary of DataFrames:

dfs = dict(tuple(df.groupby('STORENAME')))
Run Code Online (Sandbox Code Playgroud)

然后选择STORENAME:

store1 = dfs['Store1']
store2 = dfs['Store2']

print (store1)
   PRICE Name   PER CATEGORY STORENAME
0   9.99   MF  gram   Indica    Store1

print (store2)
   PRICE Name   PER CATEGORY STORENAME
1   9.99   HY  gram     Herb    Store2
2   9.99   FF  gram     Herb    Store2
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,因为我事先不知道店名,所以我不能按店名选择。但是我做了 **listdf = [dfs[x] for x in dfs]** 以获得完整列表,然后我可以循环遍历类别。谢谢! (3认同)