【问题标题】:kdb+ How do I import only specific columns from a CSV file into a tablekdb+ 如何仅将 CSV 文件中的特定列导入表中
【发布时间】:2017-05-03 11:41:20
【问题描述】:

示例: 具有 4 个标题的 CSV 文件:a、b、c、d。 例如,我如何只“选择”列 b 和 d,所以我最终得到一个 q 表,其中两列带有 b 和 d 标题?

【问题讨论】:

    标签: csv kdb q-lang


    【解决方案1】:

    对于要跳过的列,请在“类型”字符串中使用空格字符。所以选择'b'和'd'列:

    q)\cat test.csv
    "a,b,c,d"
    "1,blah,3,4"
    q)
    q)(" S J";enlist csv) 0: `:test.csv
    b    d
    ------
    blah 4
    

    【讨论】:

    • 后续问题:我想有没有办法实际使用表头的名称来取列?如果我有 100 列并且只想使用实际的标题名称作为字符串来获取给定的列。除非我编写了一个 sep 函数来解析第一个标题行并获取所需列标题的索引。
    • 可能不是最有效的解决方案,但您可以加载所有数据,然后选择您需要的列,例如select b,d from ("****";enlist csv) 0: `:test.csv
    • 谢谢。最后一个问题。如何将所有列作为字符串导入,而不必将每个列类型键入为(“SSSSSS ...”)我想做类似的事情(“所有列数据类型”;登记 csv)。不想输入每个列的数据类型。
    • 如果您知道表中有多少列(或预先计算它们),只需使用 take #,例如(4#"*";enlist csv) 0: `:test.csv。不过,您应该警惕将所有字符串作为符号加载,除非它们是重复的字符串。查看更多here
    • 再次感谢 James,这就是我要找的东西
    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多