对于使用pandas的loc以及reset_index进行索引重置

1.pandas.DataFrame.loc

按标签或布尔数组访问一组行和列。

.loc[ ] 主要是基于标签的,但也可用于布尔数组。

允许输入包括:

  • 单个标签,例如 或 (请注意,该注释被解释为索引的标签,并且永远不会作为沿索引的整数位置)。5’a’5

  • 标签的列表或数组,例如 。[‘a’, ‘b’, ‘c’]

  • 具有标签的切片对象,例如 。‘a’:‘f’

  • 与被切片的轴长度相同的布尔数组,例如 。[True, False, True]

  • 可对齐的布尔系列。键的索引将在遮罩之前对齐。

  • 可对齐索引。返回选择的索引将是输入。

  • 具有一个参数(调用系列或 DataFrame)的函数,它返回用于索引的有效输出(以上之一)callable

参考链接:pandas

2.pandas.pandas.DataFrame.reset_index

重置索引或索引级别。

重置 DataFrame 的索引,然后使用默认索引。如果 DataFrame 具有多索引,此方法可以删除一个或多个级别。

Parameters:

  • level: int, str, tuple, or list, default None
    仅从索引中删除给定级别。默认情况下删除所有级别。
  • drop: bool, default False
    请勿尝试将索引插入数据框列。这会将索引重置为默认整数索引。
  • inplace: bool, default False
    修改数据帧就位(不要创建新对象)。
  • col_level: int or str, default 0
    如果列具有多个级别,则确定标签插入到哪个级别。默认情况下,它插入到第一个级别。
  • col_fill: object, default ‘’
    如果列具有多个级别,则确定其他级别的命名方式。如果"无",则重复索引名称。

Returns:

  • DataFrame or None
    数据帧与新索引或无如果 。inplace=True

示例

import pandas as pd
import numpy as np
from sklearn.model_selection import GroupKFold, StratifiedKFold
CFG = {
    'fold_num': 10,
    'seed': 719,
    'model_arch': 'tf_efficientnet_b3_ns',
    'img_size': 384,
    'epochs': 32,
    'train_bs': 28,
    'valid_bs': 32,
    'lr': 1e-4,
    'num_workers': 4,
    'accum_iter': 1, # suppoprt to do batch accumulation for backprop with effectively larger batch size
    'verbose_step': 1,
    'device': 'cuda:0',
    'tta': 3,
    'used_epochs': [6,7,8,9],
    'weights': [1,1,1,1]
}
train = pd.read_csv('../木薯叶分类/cassava-leaf-disease-classification/train.csv')
train.head()
train.label.value_counts()
print(train)

             image_id  label
0      1000015157.jpg      0
1      1000201771.jpg      3
2       100042118.jpg      1
3      1000723321.jpg      1
4      1000812911.jpg      3
...               ...    ...
21392   999068805.jpg      3
21393   999329392.jpg      3
21394   999474432.jpg      1
21395   999616605.jpg      4
21396   999998473.jpg      4

[21397 rows x 2 columns]
folds = StratifiedKFold(n_splits=CFG['fold_num']).split(np.arange(train.shape[0]), train.label.values)
for fold, (trn_ind, test) in enumerate(folds):
    print('Train: %s | test: %s | Train.size: %s | test.size: %s' % (trn_ind, test, trn_ind.size, test.size))
    print(" ")
    
Train: [ 2033  2034  2043 ... 21394 21395 21396] | test: [   0    1    2 ... 2443 2473 2528] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [2033 2034 2043 ... 4505 4545 4556] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [4137 4152 4160 ... 7014 7021 7022] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [6297 6308 6324 ... 8842 8883 8885] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [ 8377  8379  8381 ... 11034 11053 11064] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [10556 10576 10577 ... 13164 13184 13226] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [12787 12789 12795 ... 15030 15046 15078] | Train.size: 19257 | test.size: 2140
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [14774 14778 14780 ... 17158 17160 17171] | Train.size: 19258 | test.size: 2139
 
Train: [    0     1     2 ... 21394 21395 21396] | test: [16944 16951 16954 ... 19424 19428 19429] | Train.size: 19258 | test.size: 2139
 
Train: [    0     1     2 ... 19424 19428 19429] | test: [19132 19151 19154 ... 21394 21395 21396] | Train.size: 19258 | test.size: 2139
valid_ = train.loc[test,:].reset_index(drop=True)

           image_id  label
0     573039129.jpg      2
1     577684636.jpg      2
2     578106393.jpg      2
3     581164870.jpg      2
4     582120514.jpg      2
...             ...    ...
2134  999068805.jpg      3
2135  999329392.jpg      3
2136  999474432.jpg      1
2137  999616605.jpg      4
2138  999998473.jpg      4

[2139 rows x 2 columns]

print(train)
            image_id  label
19132  573039129.jpg      2
19151  577684636.jpg      2
19154  578106393.jpg      2
19171  581164870.jpg      2
19176  582120514.jpg      2
...              ...    ...
21392  999068805.jpg      3
21393  999329392.jpg      3
21394  999474432.jpg      1
21395  999616605.jpg      4
21396  999998473.jpg      4

[2139 rows x 2 columns]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值