{"record":{"id":"b6d8b4f962512ee0","repo":"dotnet/machinelearning","slug":"notimplementedexception","errorCode":null,"errorMessage":"NotImplementedException","messagePattern":"NotImplementedException","errorType":"exception","errorClass":"NotImplementedException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.Data.Analysis/DataFrameColumn.cs","lineNumber":298,"sourceCode":"            var ret = new Dictionary<long, ICollection<long>>();\n\n            //For each value in this column find rows from other column with equal value\n            for (int i = 0; i < this.Length; i++)\n            {\n                var value = this[i];\n                if (value != null && multimap.TryGetValue((TKey)value, out ICollection<long> otherRowIndices))\n                {\n                    ret.Add(i, otherRowIndices);\n                }\n            }\n\n            return ret;\n        }\n\n        /// <summary>\n        /// Returns a DataFrame containing counts of unique values\n        /// </summary>\n        public virtual DataFrame ValueCounts() => throw new NotImplementedException();\n\n        public virtual GroupBy GroupBy(int columnIndex, DataFrame parent) => throw new NotImplementedException();\n\n        /// <summary>\n        /// Returns a new column with <see langword=\"null\" /> elements replaced by <paramref name=\"value\"/>.\n        /// </summary>\n        /// <remarks>Tries to convert value to the column's DataType</remarks>\n        /// <param name=\"value\"></param>\n        /// <param name=\"inPlace\">Indicates if the operation should be performed in place</param>\n        public virtual DataFrameColumn FillNulls(object value, bool inPlace = false) => FillNullsImplementation(value, inPlace);\n\n        protected abstract DataFrameColumn FillNullsImplementation(object value, bool inPlace);\n\n        /// <summary>\n        /// Returns a <see cref=\"DataFrameColumn\"/> with no missing values.\n        /// </summary>\n        public virtual DataFrameColumn DropNulls() => DropNullsImplementation();\n","sourceCodeStart":280,"sourceCodeEnd":316,"githubUrl":"https://github.com/dotnet/machinelearning/blob/7b76e69cf964daeca3f1377af6bc5543284d56c6/src/Microsoft.Data.Analysis/DataFrameColumn.cs#L280-L316","documentation":"DataFrameColumn.ValueCounts is a virtual method on the abstract DataFrameColumn base class whose base implementation is a stub that always throws NotImplementedException. Only derived columns that override it (primitive column types in this library version) provide the actual unique-value counting; calling it on a column type that has not overridden the method surfaces the raw NotImplementedException.","triggerScenarios":"Calling column.ValueCounts() on a DataFrameColumn instance whose concrete type does not override ValueCounts (e.g. a custom column subclass, or a non-primitive column type).","commonSituations":"Writing generic code over DataFrameColumn collections in a DataFrame where some columns are custom or unsupported types; upgrading/downgrading Microsoft.Data.Analysis versions where override coverage changed; exploratory analysis calling ValueCounts on every column.","solutions":["Call ValueCounts only on column types known to implement it (e.g. PrimitiveDataFrameColumn<T>, StringDataFrameColumn).","Check HasDescription()-style capability or wrap the call in try/catch for NotImplementedException and skip unsupported columns.","If it is your own column subclass, override ValueCounts and return a DataFrame of value counts.","Upgrade the Microsoft.Data.Analysis package — later versions implement this for more column types."],"exampleFix":"// before\nforeach (DataFrameColumn col in df.Columns)\n    var counts = col.ValueCounts(); // throws for unsupported types\n// after\nforeach (DataFrameColumn col in df.Columns)\n{\n    try { var counts = col.ValueCounts(); }\n    catch (NotImplementedException) { /* skip column type without ValueCounts */ }\n}","handlingStrategy":"try-catch","validationCode":"bool supported = col is PrimitiveDataFrameColumn<int> || col is PrimitiveDataFrameColumn<long> || col is PrimitiveDataFrameColumn<double> || col is PrimitiveDataFrameColumn<float> || col is StringDataFrameColumn;","typeGuard":"static bool SupportsValueCounts(DataFrameColumn c) =>\n    c is PrimitiveDataFrameColumn<int> || c is PrimitiveDataFrameColumn<long> ||\n    c is PrimitiveDataFrameColumn<float> || c is PrimitiveDataFrameColumn<double> ||\n    c is StringDataFrameColumn;","tryCatchPattern":"try { var counts = col.ValueCounts(); }\ncatch (NotImplementedException)\n{\n    // column type does not support ValueCounts in this package version; skip or compute manually\n}","preventionTips":["Call virtual analytics APIs only on concrete column types known to implement them","Check the package changelog for override coverage before upgrading","Prefer DataFrame-level APIs (df.GroupBy) over base-class virtual stubs"],"tags":["dotnet","dataframe","not-implemented","virtual-method"],"backgroundTag":"method-not-implemented","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"}