dotnet/machinelearning · error · ArgumentException
MismatchedColumnLengths
Error message
MismatchedColumnLengths
What it means
StringDataFrameColumn.Add (and its arithmetic family) requires both columns to have the same Length; element i is combined with element i. When Length != column.Length it throws ArgumentException with the message Strings.MismatchedColumnLengths ('MismatchedColumnLengths'). The library has no broadcasting or alignment for binary column operations.
Source
Thrown at src/Microsoft.Data.Analysis/StringDataFrameColumn.BinaryOperations.cs:20
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
namespace Microsoft.Data.Analysis
{
public partial class StringDataFrameColumn : DataFrameColumn
{
/// <inheritdoc/>
public override DataFrameColumn Add(DataFrameColumn column, bool inPlace = false)
{
if (Length != column.Length)
{
throw new ArgumentException(Strings.MismatchedColumnLengths, nameof(column));
}
StringDataFrameColumn ret = inPlace ? this : Clone();
for (long i = 0; i < Length; i++)
{
ret[i] += column[i].ToString();
}
return ret;
}
public static StringDataFrameColumn operator +(StringDataFrameColumn column, string value)
{
return column.Add(value);
}
public static StringDataFrameColumn operator +(string value, StringDataFrameColumn column)
{
return Add(value, column);
}View on GitHub (pinned to 7b76e69cf9)
Solutions
- Ensure both columns have the same Length before adding: filter/pad/truncate so counts match
- Verify the intended operand — if you meant to append a constant, use the string overload (Add(string value)) instead of a column overload
- Re-derive both columns from the same filtered DataFrame so row counts stay in sync
- Check for null/missing rows removed on one side only; rebuild with an index-based join
Example fix
// before
var filtered = df["A"].ElementwiseLessThan(10); // shorter after use elsewhere
var result = strColumn.Add(otherStrColumn); // Lengths 100 vs 90 -> ArgumentException
// after
if (strColumn.Length != otherStrColumn.Length)
throw new InvalidOperationException("Align columns before Add");
var result = strColumn.Add(otherStrColumn); Defensive patterns
Strategy: validation
Validate before calling
if (left.Length != right.Length)
throw new InvalidOperationException($"Cannot Add: lengths differ ({left.Length} vs {right.Length})"); Type guard
bool SameLength(DataFrameColumn a, DataFrameColumn b) => a.Length == b.Length;
Try / catch
try { var result = strColumn.Add(otherColumn); }
catch (ArgumentException ex) when (ex.Message.Contains("MismatchedColumnLengths")) {
// align lengths: filter both columns from the same source or pad/truncate
} Prevention
- Always derive related columns from the same filtered DataFrame so lengths stay in sync
- Check column.Length equality before every element-wise binary operation
- Remember there is no broadcasting for column-vs-column ops; scalars are the broadcast path
- Validate row counts after joins/filters before combining columns
When it happens
Trigger: Calling stringColumn.Add(otherColumn) — including the + operator and Add(column, inPlace:true) — where the two columns have different row counts, e.g. Length=100 vs Length=90 after a filter/join on only one side.
Common situations: Filtering one column independently before concatenating; misaligned results from a left join; appending rows to one column only; mixing columns from DataFrames of different sizes.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- Column lengths are mismatched
- Expected column to hold values of type {0}
- MismatchedColumnLengths
- Exception of type 'System.ArgumentException' was thrown.
- Parameter must not be null, empty, or whitespace
AI-assisted analysis of dotnet/machinelearning@7b76e69cf9 (2026-09-11).
Data as JSON: /api/errors/36e70145fe9f257b.
Report an issue: GitHub.