需求:
我想要下标来获取MLDataTable
对象里面的一个column,他默认下标返回的是MLUntypedColumn
,我需要的是MLDataColumn
。他的subscript定义是这个样子的:
/// Subscript by column name. Returns an invalid UntypedColumn if the DataTable does not contain the name.
public subscript(columnName: String) -> CreateML.MLUntypedColumn
/// Subscript by column name. Returns an invalid DataColumn if the DataTable does not contain the name.
public subscript<Element>(columnName: String) -> CreateML.MLDataColumn<Element> where Element : MLDataValueConvertible
/// Subscript by column name and type. Returns nil if no column has the given name or if the
/// named column does not have the given type.
public subscript<T>(columnName: String, columnType: T.Type) -> CreateML.MLDataColumn<T>? where T : MLDataValueConvertible { get }
/// Subscript by the list of column names. Returns a DataTable with the specified columns
public subscript<S>(columnNames: S) -> CreateML.MLDataTable where S : Sequence, S.Element == String { get }
他默认subscript使用直接xxx["xxx"]
这样就行了,但是我想使用public subscript<Element>(columnName: String) -> CreateML.MLDataColumn<Element> where Element : MLDataValueConvertible
重载我就不知道怎么写了。翻官方文档没找到,还是我太菜了。刚入手swift语法不太会,去几个swift群里面问也没有啥结果,所以来这个大佬聚集的地方问一下。
代码:
import CreateML
import Cocoa
let manager = FileManager.default
let csvFile = "train.csv"
let url = URL(fileURLWithPath: csvFile)
//maxRows
let option = MLDataTable.ParsingOptions(maxRows: 100000)
var dataTable = try MLDataTable(contentsOf: url, options: option)
let AppVersion = dataTable["IsBeta"]
我是想要获取一列,然后填充缺失值,MLDataColumn
才有求平均值中位数相关的方法,但是默认下标引用返回的不是这个对象。
菜鸡在此谢谢大佬们