我如何保存一个连接的数据框名称作为原来的.csv文件名在Pandas?

mzillmmw  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个文件夹,其中包含的文件如下:一个月一次,一个月一次,一个月二次
我想读取所有文件,并将其连接在一个csv中,然后将此连接的df打印为ANGOSTURA_U1_202209_month.csv
考虑到这些文件可以称为Colbun_U1_20220801.csvColbun_U1_20220802.csvColbun_U1_20220803.csv,但是我希望输出的文件名始终是名字和日期。Colbun_U1_202208_month.csv如果文件为ANGOSTURA_U1_XXXX01.csv,则输出文件名:ANGOSTURA_U1_XXXX_month.csv,如果文件为Colbun_U2_XXXX01.csv,则输出文件名:Colbun_U2_XXXX_month.csv,但它始终位于Colbun或Angostura文件夹中,而不是两者
这是我的代码:(我尝试了os.listdirglob.glob

import pandas as pd
import numpy as np
import glob
import os
import csv
all_files = glob.glob("C:/Users/ep_irojaso/Desktop/PROGRAMA DESEMPEÑO/saturnmensual/*.csv")
file_list = []
  for f in (all_files):   
   data = pd.read_csv(f,usecols=["t","f"])

   file_list.append(data)
df=pd.concat(file_list,ignore_index=True)
df.to_csv(f'C:/Users/ep_irojaso/Desktop/PROGRAMA DESEMPEÑO/Saturn2mensual/{os.path.basename(f).split(".")[0]}_mensual.csv')
lrl1mhuk

lrl1mhuk1#

您可以尝试以下操作:

from itertools import groupby
from pathlib import Path

def key(file_path): return file_path.stem[:-2]

base = Path("C:/Users/ep_irojaso/Desktop/PROGRAMA DESEMPEÑO/saturnmensual/")
all_files = sorted(base.glob("*.csv"))
for key, files in groupby(all_files, key=key):
    pd.concat(
        [pd.read_csv(file, usecols=["t", "f"]) for file in files]
    ).to_csv(base / f"{key}_month.csv", index=False)
  • 使用标准库中的pathlib,而不是os:将base路径设置为包含CSV文件的文件夹。
  • glob其中的所有CSV文件,并将其排序到列表all_files中。
  • 现在,将标准库模块itertools中的文件分组到每月的存储桶中,分组键是不带扩展名的文件名,最后到个字符(根据您的指定为天)。
  • 然后将一个月内的所有 Dataframe 连接起来,并将新 Dataframe 写入新CSV文件。

相关问题