删除同一目录中多个CSV文件中的前两列和最后一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除同一目录中多个CSV文件中的前两列和最后一列相关的知识,希望对你有一定的参考价值。

我想知道从具有相同列结构的多个CSV文件中删除前两列和最后一列的最佳方法是什么?

我已经尝试过awk和pandas,但似乎它只给我一个选择,可以一次从一个input.csv文件中删除列并将其另存为output.csv。如何在不创建output.csv但覆盖现有文件的情况下删除多个文件中的1,2,7列?

我的CSV文件如下所示,其中Col1,Col2,Col7完全为空(包括列标题)。

Col1   Col2    Col3        Col4       Col5         Col6    Col7
             some_data   some_data  some_data   some_data
             some_data   some_data  some_data   some_data
             some_data   some_data  some_data   some_data

和所需的输出:

    Col3        Col4       Col5         Col6   
  some_data   some_data  some_data   some_data
  some_data   some_data  some_data   some_data
  some_data   some_data  some_data   some_data

谢谢!

到目前为止,我的代码...

import pandas as pd
import os
import fileinput
from dateutil import parser
# specifying directory and determining files for my loop 
path = r'/path/to/my/files'
files = [os.path.join(path,data_file) for data_file in sorted(os.listdir(path))]
#trying to read each csv file separately and delete columns from it
df = pd.read_csv(files)
# specifying columns to delete
first_column = df.columns[0]
second_column = df.columns[1]
last_column = df.columns[7]
# Delete my columns
df = df.drop([first_column, second_column, last_column], axis=1)
# trying to overwrite existing files after column removal instead of creating new files i.e. output.csv
df.to_csv(files, index=False)
答案
cd /path/to/my/file

for file in *.csv
do
cut -d, -f3,4,5,6,7 "$file" > "new_$file"
done

以上是关于删除同一目录中多个CSV文件中的前两列和最后一列的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使表格的前两列与其内容一样宽,而第三列占据剩余空间?

不确定如何将公式动态粘贴到最后一列和最后一行

使用 pandas 从 Excel 文件中读取最后一列

使用 PIG 或 HIVE 从 CSV 中删除前两行

如何用批处理命令把1个文件夹里多个csv文件的某一列合并成一个txt

为啥在尝试访问 HTML 表中的前两列时会出现错误?