将Import-CSV结果从字符串转换为任意数据类型

鲍勃·莫蒂默(Bob Mortimer)

假设我从PowerShell中读取了一个CSV文件:

$data = Import-Csv "myfilename.csv"

CSV文件(通常)可以包含字符串和数字,但是PowerShell将它们作为字符串存储在内存中:

PS D:\> $ data [0] .Col3.GetType()

IsPublic IsSerial名称BaseType 
-------- -------- ---- --------
是是是字符串System.Object

导入后,能够从字符串转换类型将很有用。如果只有一两列,则可以使用以下计算的属性将它们转换:

$data = Import-Csv "myfilename.csv" |
        select -Property @{n='Col2';e={[int]$_.Col2}},
            @{n='Col3';e={[double]$_.Col3}}

但是,假设我事先不知道列名和预期的类型。相反,我有一个任意的“模式”告诉我哪些列应该是哪种类型,例如:

$Schema = @{Col1=[string];Col2=[int];Col3=[double]}

如何将Import-CSV的输出转换为架构确定的类型?(最好以有效/优雅的方式)

样本CSV文件

“ Col1”,“ Col2”,“ Col3” 
“ a”,2,4.3 
“ b”,5,7.9
马丁·布兰德尔

您可以通过-as强制转换来做到这一点

$data = Import-Csv "myfilename.csv" |
        select -Property @{n='Col2';e={$_.Col2 -as $Schema.Col2}},
            @{n='Col3';e=$_.Col3 -as $Schema.Col3}}

对于任意数量的列,您可以将此答案中概述的方法扩展到一个类似的问题:

$data = Import-Csv "myfilename.csv" | Foreach-Object { 
          foreach ($property in $_.PSObject.Properties) {
            $property.Value = $property.Value -as $Schema[$property.Name]
          }
          $_   # return the modified object
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数据类型转换为查询字符串

将字符串引用数据类型转换为真正的引用数据类型

将字符串的 varchar 值转换为数据类型 int 时转换失败

如何将数据帧数据类型转换为字符串?

将混合数据类型的元组列表转换为所有字符串

将任何原始数据类型转换为字符串的最佳方法是什么

将字符串转换为数据类型以存储在哈希表中

来自NODEJS的MongoDB插入将值的数据类型从int转换为字符串

如何将字符串转换为自定义数据类型

将数据类型转换为字符串以显示而不显示“ show”

将字符串转换为 IO[str] 数据类型

将字符串日期转换为日期数据类型

将字符串转换为char和int数据类型

将字符串转换为数字数据类型并舍入浮点值的函数

R语言将时间数据类型转换为字符串

如何将“frozenset({})”字符串转换为数据类型frozenset?

将数据类型varchar转换为将int year转换为字符串的日期时出错

SQL查询结果将日期列报告为字符串,在将其转换为日期数据类型时遇到问题

GETDATE() 函数返回错误“将字符串转换为 smalldatetime 数据类型时转换失败。”

DataType.fromJson() 错误:java.lang.IllegalArgumentException:无法将 JSON 字符串“int”转换为数据类型

Hive - 将像“yyyy-MM-dd”这样的字符串转换为数据类型“yyyy-MM-dd”

如何将Oracle RAW数据类型(另存为字符串)转换为Java String?

TensorFlow:如何将tf.Tensor字符串转换为python datetime数据类型?

将数据类型从数组转换为字符串,用于 Spark 抛出错误中的多列

将Pandas数据框转换为CSV字符串

将(csv)字符串对象转换为数据框

将 CSV 数据转换为字符串

将具有多种数据类型(字符串和整数)的列表转换为python中的字符串

将类型转换为字符串