Python 使用Pandas递归编辑CSV到子目录
我有一系列子目录文件夹,每个文件夹都有一个_Invoice.csvPython 使用Pandas递归编辑CSV到子目录,python,pandas,csv,Python,Pandas,Csv,我有一系列子目录文件夹,每个文件夹都有一个_Invoice.csv /Invoice List/ Invoice1folder/ ..._Invoice.csv Invoice2folder/ ..._Invoice.csv Invoice5folder/
/Invoice List/
Invoice1folder/
..._Invoice.csv
Invoice2folder/
..._Invoice.csv
Invoice5folder/
..._Invoice.csv
Invoice9folder/
_Invoice.csv
对于每个_Invoice.csv,我有[A、B、C、D]列。我正在尝试递归搜索所有子目录文件夹,打开每个_Invoice.csv文件,将列缩减为[A,C],然后将其另存为_Invoice_Reduced.csv
"_Invoice.csv" "_Invoice_Reduced.csv"
A B C D => A C
1 2 3 4 => 1 3
我目前的尝试是:
import pandas as pd
import os
columns_to_keep = ['A','C']
final_form= pd.DataFrame()
for file in os.listdir():
if file.endswith('*_Invoice.csv'):
df = pd.read_csv(file)
df = df.loc[;columns_to_keep]
df = df.to_csv(f'{file.name}_Invoice_Reduced.csv')
if file.endswith('*_Invoice_Reduced.csv'):
df = pd.read_csv(file)
final_form= final_form.append(df, ignore_index=True)
TLDR:我试图创建一个脚本,它进入每个子目录,减少一个预先存在的CSV,减少CSV的列,并保存子集。然后在读取所有子目录后,将缩减的文件合并到一个大的_框架中
有什么想法吗?这就行了
而不是打开、删除列、保存和继续;我选择只使用减少的列打开,保存这个减少的数据帧,然后附加到df。这将导致所有缩减的文件都堆叠在这一数据帧中
使用路径=。从当前目录中删除
从pathlib导入路径
作为pd进口熊猫
df=pd.DataFrame
列_至_keep=['A','C']
路径=。
模式=*\u Invoice.csv
对于Pathpath.rglobpattern中的文件:
输出_file={}/{}{}.formatfile.parent,file.stem,_Reduced.csv
_df=pd.read\u csvfile,使用cols=columns\u保存
_df.to_csvoutput_文件,sep=,index=False,header=True
df=pd.concat[df,_-df]
您当前代码的行为是什么,它与您希望它做的有什么差距?第一个想法是,除非您使用,否则您可能不希望在endswith测试中使用*,并且在第一次运行代码时,您的第二条if语句(查找_Invoice_Reduced.csv)不会触发,因为循环的文件名是在您进行任何处理之前生成的。您可以通过一点基本调试至少捕获其中的一些文件名。