我想从每个csv中删除特定的行。目录中的文件(即从第0行到第33行),但是我有224个单独的csv。需要完成的文件。如果您能帮助我,我将如何使用一个代码来执行此操作,我将很高兴。
答案 0 :(得分:2)
我认为您可以使用glob和pandas轻松完成此操作,我不确定您是否要在原始文件中写一些我不推荐的内容,因此请谨慎使用此代码。
import os
import glob
import pandas as pd
os.chdir(r'yourdir')
allFiles = glob.glob("*.csv") # match your csvs
for file in allFiles:
df = pd.read_csv(file)
df = df.iloc[33:,] # read from row 34 onwards.
df.to_csv(file)
print(f"{file} has removed rows 0-33")
或类似的内容..
答案 1 :(得分:0)
这是两个单独任务的简单组合。
首先,您需要遍历文件夹中的所有csv文件。有关具体操作,请参见this StackOverflow answer。
接下来,在该循环中,对于每个文件,您需要通过删除行来修改csv。有关如何读取csv,编写csv以及根据条件省略某些行的信息,请参见this answer。
最后一个方面是您要省略某些行号。一个很好的方法是使用枚举函数。
这样的代码将为您提供行号。
import csv
input = open('first.csv', 'r')
output = open('first_edit.csv', 'w')
writer = csv.writer(output)
for i, row in enumerate(input):
if i > 33:
writer.writerow(row)
input.close()
output.close()
答案 2 :(得分:0)
遍历CSV文件并使用Pandas删除每个文件的前34行,然后将其保存到输出目录。
在安装pandas
之后尝试以下代码:
from pathlib import Path
import pandas as pd
source_dir = Path('path/to/source/directory')
output_dir = Path('path/to/output/directory')
for file in source_dir.glob('*.csv'):
df = pd.read_csv(file)
df.drop(df.head(34).index, inplace=True)
df.to_csv(output_dir.joinpath(file.name), index=False)