如何在不使用循环的情况下获取pandas中的最后一行

bxfogqkk  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(106)

我有一些数据可以按列type分组,然后按另一列order排序。我想知道我是否可以使用sklearntrain_test_split来拆分这些数据,以便将order值相同且在数字上最后的行拆分为test。在下面的示例中,我希望最后两行order=3进入test的情况。
| 类型|秩序|
| --|--|
| 一| 1 |
| 一| 1 |
| 一| 2 |
| 一| 2 |
| 一| 3 |
| 一| 3 |
我能想到的方法是通过编程的方式来实现,并在从具有多个类型的较大的嵌套框中选择这些值后,在type上遍历时,将这些值附加到列表,嵌套框或数组中。我想知道是否有一种替代方法可以使用train_test_splitpandas中的某些东西来避免循环。

编辑:

我也想有在顶部的行与订单12,因为我需要他们在培训。

vwkv1x7d

vwkv1x7d1#

下面的解决方案是否合适?它根据行是否为“order == maximum order value”来过滤行。


的数据
数据类型:

import pandas as pd

data = {'type': ['A', 'A', 'A', 'A', 'A', 'A'],
        'order': [1, 1, 2, 2, 3, 3]}

df = pd.DataFrame(data)

字符串
筛选行

top_rows, bottom_rows = [df.loc[rows] for rows
                         in [df.order.ne(df.order.max()), df.order.eq(df.order.max())]
                         ]

display(top_rows, bottom_rows)

rqenqsqc

rqenqsqc2#

验证码

cond = df.groupby('type')['order'].transform('last').eq(df['order'])

字符串
第一个月

type    order
4   A       3
5   A       3


df[~cond]

type    order
0   A       1
1   A       1
2   A       2
3   A       2

相关问题