如何在pandas.core.groupby.DataFrameGroupBy中以相反的顺序使用for循环?

时间:2018-03-05 10:10:39

标签: python pandas

我有一个pandas.core.groupby.DataFrameGroupBy对象,iter_gb包含客户行程。样本数据看起来像。行程之后它包含6列,这些列并不重要。

Customer_id YEAR    Itinerary A1, B1, ...
38915672    2015    B12345
38915672    2012    B12345
38915672    2012    B25431
38915672    2012    B25431
38915672    2012    B25431
38915672    2012    B25431
38915672    2012    B25431
38915672    2012    B36789
38915672    2012    B36789
38915672    2012    B36789
38915672    2012    B36789
38915672    2012    B36789
38915672    2012    B86451
38915672    2012    B86451
38915672    2012    B86451
38915672    2012    B86451
38915672    2011    B86451

我想以相反的顺序使用for loop阅读此内容。

例如for循环将从最后一行开始存储数据框中的B86451的所有行&然后 B36789&等等。

如何在python 3.x中执行此操作?

1 个答案:

答案 0 :(得分:1)

您似乎需要先反转DataFrame然后循环:

for i, x in df[::-1].groupby('Itinerary', sort=False):
    print (x)
    Customer_id  YEAR Itinerary
16     38915672  2011    B86451
15     38915672  2012    B86451
14     38915672  2012    B86451
13     38915672  2012    B86451
12     38915672  2012    B86451
    Customer_id  YEAR Itinerary
11     38915672  2012    B36789
10     38915672  2012    B36789
9      38915672  2012    B36789
8      38915672  2012    B36789
7      38915672  2012    B36789
   Customer_id  YEAR Itinerary
6     38915672  2012    B25431
5     38915672  2012    B25431
4     38915672  2012    B25431
3     38915672  2012    B25431
2     38915672  2012    B25431
   Customer_id  YEAR Itinerary
1     38915672  2012    B12345
0     38915672  2015    B12345