Python 熊猫:迭代已按排序顺序排列的列的唯一值

Python 熊猫:迭代已按排序顺序排列的列的唯一值,python,group-by,pandas,Python,Group By,Pandas,我已经按照排序顺序构建了一个pandas数据帧,并希望迭代具有特定列的相同值的组。在我看来,groupby功能对此很有用,但就我所知,执行groupby并不能保证密钥的顺序。如何按排序顺序提取unqiue列值 以下是一个示例数据帧: Foo,1 Foo,2 Bar,2 Bar,1 我想要一个列表[“Foo”,“Bar”],其中顺序由原始数据帧的顺序保证。然后,我可以使用此列表提取适当的行。在我的例子中,排序实际上是由数据框中给出的列定义的(上面的示例中未包含),因此,如果无法直接提取信息,则可

我已经按照排序顺序构建了一个pandas数据帧,并希望迭代具有特定列的相同值的组。在我看来,groupby功能对此很有用,但就我所知,执行groupby并不能保证密钥的顺序。如何按排序顺序提取unqiue列值

以下是一个示例数据帧:

Foo,1
Foo,2
Bar,2
Bar,1

我想要一个列表[“Foo”,“Bar”],其中顺序由原始数据帧的顺序保证。然后,我可以使用此列表提取适当的行。在我的例子中,排序实际上是由数据框中给出的列定义的(上面的示例中未包含),因此,如果无法直接提取信息,则可以接受重新排序的解决方案

如评论中所述,您可以在列上使用unique,这将保留顺序(与numpy的unique不同,它不排序):

然后,您可以使用groupby的
get\u group
访问相关行:

In [13]: g = df.groupby([0])

In [14]: g.get_group('Foo')
Out[14]: 
     0  1
0  Foo  1
1  Foo  2    

您能给出代码来说明在您的案例中为什么失败吗?我的经验是,在Pandas中执行
groupby
之后,新数据帧的顺序与原始未分组数据帧的顺序相同。如果您可以提供少量代码来构造一个玩具数据框,执行分组,然后显示手头的问题,这将很有帮助。如果您只需要一个列中相同顺序的值的唯一列表,为什么不使用以下命令:
df.c1.unique()
,其中c1是要为其指定唯一值的列的名称。当我尝试使用上面的示例时,得到的“array”未定义。它是在什么地方定义的吗?@aging_gorrila输出线是输出线(来自ipython)。数据帧是通过读取上述问题中的csv来定义的,但是您自己的可以使用。
array
只是指熊猫用来存储数据的底层NumPy
ndarray
np.ndarray
In [13]: g = df.groupby([0])

In [14]: g.get_group('Foo')
Out[14]: 
     0  1
0  Foo  1
1  Foo  2