我有一系列子目录文件夹,每个文件夹都有一个“_Invoice.csv”。
/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 的列并保存子集。然后在读取完所有子目录后,将缩减的文件合并到一个 big_frame 中。
有什么想法吗?
这样就可以完成工作了。
而不是打开、删除列、保存并继续;我选择仅使用减少的列打开,保存此减少的 DataFrame,然后附加到df
。这将导致所有减少的文件都堆叠在这个 DataFrame 中。
Using path = "."
从当前目录开始
from pathlib import Path
import pandas as pd
df = pd.DataFrame()
columns_to_keep = ['A','C']
path = "."
pattern = "*_Invoice.csv"
for file in Path(path).rglob(pattern):
output_file = "{}/{}{}".format(file.parent, file.stem, "_Reduced.csv")
_df = pd.read_csv(file, usecols=columns_to_keep)
_df.to_csv(output_file, sep=",", index=False, header=True)
df = pd.concat([df, _df])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)