繁体   English   中英

Swift MLDataTable-如何删除行?

[英]Swift MLDataTable - how to remove rows?

我正在从.csv文件创建MLDataTable ,并想删除一些行,即特定列具有特定值的所有行-这可能吗?

我知道我的回答有些迟了,但是希望其他人会觉得有用。

您不能从给定的表中删除行,但是可以创建一个新表,其中某些行被过滤掉。

这是一个示例表:

let employeesDict: [String: MLDataValueConvertible] = [
    "First Name": ["Alice", "Bob", "Charlie", "Dave", "Eva"],
    "Years of experience": [10, 1, 8, 5, 3],
    "Gender": ["female", "male", "male", "male", "female"],
]

let employeesTable = try! MLDataTable(dictionary: employeesDict)

通过将MLDataColumn<Bool>的实例传递给表的下标运算符来实现过滤。 苹果称其为“行掩码”。 这是一个行掩码,用于过滤手工构建的女性实例:

let maleEmployeesMaskByHand = MLDataColumn([false, true, true, true, false])

将其作为参数传递给employeesTable的下标运算符将产生下表:

let maleEmployeesTable = employeesTable[maleEmployeesMaskByHand]
print(maleEmployeesTable)
+----------------+----------------+---------------------+
| Gender         | First Name     | Years of experience |
+----------------+----------------+---------------------+
| male           | Bob            | 1                   |
| male           | Charlie        | 8                   |
| male           | Dave           | 5                   |
+----------------+----------------+---------------------+

这是构建相同行掩码的另一种方法:

let genderColumn: MLDataColumn<String> = employeesTable["Gender"]
let maleEmployeesMask = genderColumn != "female"
print(employeesTable[maleEmployeesMask])

首先检索所需的列,然后–由于运算符重载–通过对整个列应用!=运算符来构建行掩码。

这是一种在同一行中实现相同目标的方法:

print(employeesTable[ employeesTable["Gender"] != "female" ])

相关文档的链接: https : //developer.apple.com/documentation/createml/mldatatable/3006094-subscript

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM