如果在行中找到特定的字符串,则拆分CSV(Python / Pandas / Bash)

我有一个cr脚的CSV文件,里面有多个标题。看起来像这样:

File1:
    #HEADER COL1 COL2
    data
    data
    data
    #HEADER COL1 COL2 COL3
    data
    data
    data
    data
    data
    #HEADER COL1 COL2 COL3 COL4
    data
    data
    ...

由于文件中的头文件导致无法加载大熊猫,因此我希望将每个头文件中的数据拆分为一个单独的文件(或大熊猫中的单独数据帧)。有办法吗?

此CSV由传感器生成。如果添加了传感器,则标题将获得一个新列。这也可能发生在文件头中。因此,删除这些标头不是解决方案。 (Clean wrong header inside Dataframe with Python/Pandas

在python / pandas中做到这一点真的很好,但我也对bash命令/脚本解决方案感到满意。

预期输出:

File1:
        #HEADER COL1 COL2
        data
        data
        data
File2:
        #HEADER COL1 COL2 COL3
        data
        data
        data
        data
        data
File3:
        #HEADER COL1 COL2 COL3 COL4
        data
        data
        ...

谢谢!

kuerrcn 回答:如果在行中找到特定的字符串,则拆分CSV(Python / Pandas / Bash)

awk来营救!

$ awk '/^#HEADER/{close(FILENAME "_" c); c++} {print > (FILENAME "_" c)}' file

会将输入file分成file_n个部分,其中n是分段计数器。

,

使用方便的 csplit 命令(按模式将文件分成多个部分):

csplit -b %d -f file -z input_file '/#HEADER.*/' '{*}'

查看结果:

$ head file[0-9]
==> file0 <==
#HEADER COL1 COL2
data
data
data

==> file1 <==
#HEADER COL1 COL2 COL3
data
data
data
data
data

==> file2 <==
#HEADER COL1 COL2 COL3 COL4
data
data
...
本文链接:https://www.f2er.com/3108808.html

大家都在问