{"record":{"id":"358a4b7fd3449101","repo":"dotnet/machinelearning","slug":"label-column-index-args-labelcolumnindex-is","errorCode":null,"errorMessage":"Label column index ({args.LabelColumnIndex}) is >= than # of inferred columns ({cols.Count()}).","messagePattern":"Label column index \\((.+?)\\) is >= than # of inferred columns \\((.+?)\\)\\.","errorType":"exception","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.ML.AutoML/ColumnInference/ColumnTypeInference.cs","lineNumber":387,"sourceCode":"\n            return InferenceResult.Success(outCols, args.HasHeader, cols.Select(col => col.RawData).ToArray());\n        }\n\n        private static string SuggestName(IntermediateColumn column, bool hasHeader)\n        {\n            var header = column.RawData[0].ToString();\n            return (hasHeader && !string.IsNullOrWhiteSpace(header)) ? header : string.Format(\"col{0}\", column.ColumnId);\n        }\n\n        private static IntermediateColumn GetAndValidateLabelColumn(Arguments args, IntermediateColumn[] cols)\n        {\n            IntermediateColumn labelColumn = null;\n            if (args.LabelColumnIndex != null)\n            {\n                // if label column index > inferred # of columns, throw error\n                if (args.LabelColumnIndex >= cols.Count())\n                {\n                    throw new ArgumentOutOfRangeException(nameof(args.LabelColumnIndex), $\"Label column index ({args.LabelColumnIndex}) is >= than # of inferred columns ({cols.Count()}).\");\n                }\n\n                labelColumn = cols[args.LabelColumnIndex.Value];\n            }\n            else\n            {\n                labelColumn = cols.FirstOrDefault(c => c.Name == args.Label);\n                if (labelColumn == null)\n                {\n                    throw new ArgumentException($\"Specified label column '{args.Label}' was not found.\");\n                }\n            }\n\n            return labelColumn;\n        }\n\n        public static TextLoader.Column[] GenerateLoaderColumns(Column[] columns)\n        {","sourceCodeStart":369,"sourceCodeEnd":405,"githubUrl":"https://github.com/dotnet/machinelearning/blob/7b76e69cf964daeca3f1377af6bc5543284d56c6/src/Microsoft.ML.AutoML/ColumnInference/ColumnTypeInference.cs#L369-L405","documentation":"During column type inference, if the label is specified by zero-based index, ColumnTypeInference validates the index against the number of columns actually inferred from the file. An index greater than or equal to cols.Count() means the label points past the end of the parsed schema, so it throws ArgumentOutOfRangeException. Typically the file parsed into fewer columns than expected.","triggerScenarios":"Setting LabelColumnIndex (e.g. in ColumnInferenceArguments or via settings) to a value >= the parsed column count; a file whose rows parsed into fewer columns than assumed (delimiter mismatch); one-based vs zero-based index confusion.","commonSituations":"Assuming a 20-column CSV when quoting problems collapse rows into fewer columns; hard-coded label index that breaks when the file gains/loses a column; off-by-one from using a 1-based column number in a 0-based API.","solutions":["Subtract 1 if you counted columns starting at 1 — the index is zero-based","Check how many columns were actually inferred (fix delimiter/quoting if rows collapse into fewer columns)","Prefer specifying the label by column NAME instead of index","Validate the index against the parsed column count before running inference"],"exampleFix":"// before\nargs.LabelColumnIndex = 20; // assuming 21 columns\n// after\nargs.LabelColumnIndex = cols.Count() - 1; // last column, zero-based, validated at runtime","handlingStrategy":"validation","validationCode":"if (args.LabelColumnIndex >= parsedColumnCount)\n    throw new ArgumentException(\"LabelColumnIndex out of range\");","typeGuard":null,"tryCatchPattern":"try { var res = ColumnTypeInference.InferTypes(args); }\ncatch (ArgumentOutOfRangeException) { /* recompute index from actual column count */ }","preventionTips":["Remember label index is zero-based","Derive the index from the parsed schema instead of hard-coding","Prefer label-by-name over label-by-index"],"tags":["dotnet","ml-automl","index","argument-out-of-range"],"backgroundTag":"argument-out-of-range","analyzedSha":"7b76e69cf964daeca3f1377af6bc5543284d56c6","analyzedAt":"2026-09-11T12:35:38.930Z","contentChangedAt":"2026-09-11T12:35:38.930Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}