{"record":{"id":"0aa62da4fba707c4","repo":"dotnet/machinelearning","slug":"parameter-count-exceeds-the-number-of-columns-0","errorCode":null,"errorMessage":"Parameter.Count exceeds the number of columns({0}) in the DataFrame ","messagePattern":"Parameter\\.Count exceeds the number of columns\\((.+?)\\) in the DataFrame ","errorType":"validation","errorClass":"System.ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.Data.Analysis/DataFrame.cs","lineNumber":575,"sourceCode":"                            value = null;\n                        }\n                    }\n                    if (value != null)\n                    {\n                        value = Convert.ChangeType(value, column.DataType, cultureInfo);\n\n                        if (value is null)\n                        {\n                            throw new ArgumentException(string.Format(Strings.MismatchedValueType, column.DataType), column.Name);\n                        }\n                    }\n                    cachedObjectConversions.Add(value);\n                    columnMoveNext = columnEnumerator.MoveNext();\n                    rowMoveNext = rowEnumerator.MoveNext();\n                }\n                if (rowMoveNext)\n                {\n                    throw new ArgumentException(string.Format(Strings.ExceedsNumberOfColumns, Columns.Count), nameof(row));\n                }\n                // Reset the enumerators\n                columnEnumerator = ret.Columns.GetEnumerator();\n                columnMoveNext = columnEnumerator.MoveNext();\n                rowEnumerator = row.GetEnumerator();\n                rowMoveNext = rowEnumerator.MoveNext();\n                int cacheIndex = 0;\n                while (columnMoveNext && rowMoveNext)\n                {\n                    DataFrameColumn column = columnEnumerator.Current;\n                    object value = cachedObjectConversions[cacheIndex];\n                    ret.ResizeByOneAndAppend(column, value);\n                    columnMoveNext = columnEnumerator.MoveNext();\n                    rowMoveNext = rowEnumerator.MoveNext();\n                    cacheIndex++;\n                }\n            }\n            while (columnMoveNext)","sourceCodeStart":557,"sourceCodeEnd":593,"githubUrl":"https://github.com/dotnet/machinelearning/blob/7b76e69cf964daeca3f1377af6bc5543284d56c6/src/Microsoft.Data.Analysis/DataFrame.cs#L557-L593","documentation":"After enumerating the appended row's values against the DataFrame's columns, Append checks rowMoveNext; if the row still has values left it throws ArgumentException with Strings.ExceedsNumberOfColumns ('Parameter.Count exceeds the number of columns({0}) in the DataFrame'), naming the `row` parameter. The supplied row has more fields than the DataFrame has columns.","triggerScenarios":"Appending a DataFrameRow created for a wider schema (extra key/value entries) than the target DataFrame; appending after columns were dropped; rows built with both positional and named values.","commonSituations":"Schema drift between file versions (extra CSV/JSON field); appending rows from an older schema into a trimmed DataFrame; duplicate entries for the same column in the row dictionary.","solutions":["Ensure each row's keys exactly match df.Columns names — filter or project the row before Append.","Recreate rows from the current DataFrame schema rather than reusing rows from another DataFrame.","Catch ArgumentException and log the row's keys vs df.Columns to spot the extra field.","If extra fields are expected, add the corresponding columns to the DataFrame first (or ignore them explicitly)."],"exampleFix":"// before\ndf.Append(rowWithExtraField);\n// after\nvar trimmed = new DataFrameRow(rowWithExtraField.Where(kv => df.Columns.Contains(kv.Key)));\ndf.Append(trimmed);","handlingStrategy":"validation","validationCode":"var extra = row.Where(kv => !df.Columns.Contains(kv.Key)).ToList();\nif (extra.Any())\n    throw new InvalidOperationException($\"Row has extra fields: {string.Join(',', extra.Select(kv => kv.Key))}\");\ndf.Append(row);","typeGuard":"bool MatchesSchema(DataFrame df, DataFrameRow row) => row.All(kv => df.Columns.Contains(kv.Key));","tryCatchPattern":"try { df.Append(row); }\ncatch (ArgumentException ex) { logger.LogError(ex, \"Row wider than DataFrame ({0} cols)\", df.Columns.Count); throw; }","preventionTips":["Build rows from the current target schema, not from a foreign source","Explicitly project/drop unknown fields when ingesting evolving file formats","Add schema tests that append a representative row in CI"],"tags":["append","schema-mismatch","column-count","argument"],"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"}