| File: DataFrameRow.cs | Web Access |
| Project: src\src\Microsoft.Data.Analysis\Microsoft.Data.Analysis.csproj (Microsoft.Data.Analysis) |
// Licensed to the .NET Foundation under one or more agreements. // 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; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; namespace Microsoft.Data.Analysis { /// <summary> /// A DataFrameRow is a collection of values that represent a row in a <see cref="DataFrame"/>. /// </summary> public class DataFrameRow : IEnumerable<object> { private readonly DataFrame _dataFrame; private readonly long _rowIndex; internal DataFrameRow(DataFrame df, long rowIndex) { Debug.Assert(rowIndex < df.Columns.RowCount); _dataFrame = df; _rowIndex = rowIndex; } /// <summary> /// Returns an enumerator of the values in this row. /// </summary> public IEnumerator<object> GetEnumerator() { foreach (DataFrameColumn column in _dataFrame.Columns) { yield return column[_rowIndex]; } } public IEnumerable<KeyValuePair<string, object>> GetValues() { return _dataFrame.Columns.Select(col => new KeyValuePair<string, object>(col.Name, col[_rowIndex])); } /// <summary> /// An indexer to return the value at <paramref name="index"/>. /// </summary> /// <param name="index">The index of the value to return</param> /// <returns>The value at this <paramref name="index"/>.</returns> public object this[int index] { get { return _dataFrame.Columns[index][_rowIndex]; } set { _dataFrame.Columns[index][_rowIndex] = value; } } /// <summary> /// An indexer to return the value at <paramref name="columnName"/>. /// </summary> /// <param name="columnName">The name of the column that corresponds to the return value</param> /// <returns>The value at this <paramref name="columnName"/>.</returns> public object this[string columnName] { get { return _dataFrame[columnName][_rowIndex]; } set { _dataFrame[columnName][_rowIndex] = value; } } /// <summary> /// A simple string representation of the values in this row /// </summary> public override string ToString() { StringBuilder sb = new StringBuilder(); foreach (object value in this) { sb.Append(value?.ToString() ?? "null").Append(" "); } return sb.ToString(); } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } }