Python 如何通过两列的唯一组合对数据帧进行分组?

Python 如何通过两列的唯一组合对数据帧进行分组?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,如下所示: To From Price NY CA 2000 NY MI 4000 CA NY 3000 NY CA 3000 如何有效地获取(和存储)不同的数据帧,用于每个唯一的“到”和“从”组合?最终目标是使用这样形成的数据帧生成图形。任何其他(更有效)的方法都是受欢迎的 例如: DF 1: DF 2: DF 3: 您只需对和应用df.groupby操作,然后迭代每个组 In [749]: df

我有一个熊猫数据框,如下所示:

To    From    Price
NY    CA      2000
NY    MI      4000
CA    NY      3000
NY    CA      3000
如何有效地获取(和存储)不同的数据帧,用于每个唯一的“到”和“从”组合?最终目标是使用这样形成的数据帧生成图形。任何其他(更有效)的方法都是受欢迎的

例如:

DF 1:

DF 2:

DF 3:


您只需对
应用
df.groupby
操作,然后迭代每个组

In [749]: df_list = [g for _, g in df.groupby(['To', 'From'])]

In [750]: for d in df_list:
     ...:     print(d)
     ...:     print('-' * 20)
     ...:     
   To From  Price
2  CA   NY   3000
--------------------
   To From  Price
0  NY   CA   2000
3  NY   CA   3000
--------------------
   To From  Price
1  NY   MI   4000
--------------------
df_列表中的每个元素都是一个数据帧



除非您真的需要,否则不要拆分这些组。

data.groupby(['to','From'])
?pandas支持许多绘图的groupby操作。也许您不需要三个单独的数据帧,只需要一个
groupby().plot()
调用?
To    From    Price
NY    MI      4000
To    From    Price
CA    NY      3000
In [749]: df_list = [g for _, g in df.groupby(['To', 'From'])]

In [750]: for d in df_list:
     ...:     print(d)
     ...:     print('-' * 20)
     ...:     
   To From  Price
2  CA   NY   3000
--------------------
   To From  Price
0  NY   CA   2000
3  NY   CA   3000
--------------------
   To From  Price
1  NY   MI   4000
--------------------