Python 自动通过多个路径位置并导出文件名

Python 自动通过多个路径位置并导出文件名,python,pandas,Python,Pandas,我写了一个剧本,它很管用,但不是很优雅。它合并csv文件,输出一个新文件,将该文件过滤到所需的条件,然后输出过滤后的文件,这就是我想要的文件。然后我每个月重复这个过程 我希望自动化路径目录部分,并导出从一个月(和一年)到下一个月(和一年)变化的csv文件名,而不是将此代码更改为每月处理(我还有5年的数据要处理) 请参见以下1月和2月的片段: import os import glob import pandas as pd import shutil path = r"C:\Users\jona

我写了一个剧本,它很管用,但不是很优雅。它合并csv文件,输出一个新文件,将该文件过滤到所需的条件,然后输出过滤后的文件,这就是我想要的文件。然后我每个月重复这个过程

我希望自动化路径目录部分,并导出从一个月(和一年)到下一个月(和一年)变化的csv文件名,而不是将此代码更改为每月处理(我还有5年的数据要处理)

请参见以下1月和2月的片段:

import os
import glob
import pandas as pd
import shutil
path = r"C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\20xx01"
os.chdir(path)
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

    combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames])
    combined_csv.to_csv("201401.csv", index=False, encoding='utf-8-sig')

    grab1 = r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\20xx01\201401.csv'
    move1 = r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\2014\2014-01.csv'

shutil.move(grab1,move1)

fd = pd.read_csv(r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\2014\2014-01.csv')
df = pd.DataFrame(fd)
irishsea = df[(df.lat_bin >= 5300) & (df.lat_bin <= 5500) & (df.lon_bin >= -650) & (df.lon_bin <= -250)]
irishsea.to_csv("2014-01_irishsea.csv", index=False, encoding='utf-8-sig')

grab2 = r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\20xx01\2014-01_irishsea.csv'
move2 = r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\2014\2014-01-IrishSea.csv'

shutil.move(grab2,move2)
导入操作系统
导入glob
作为pd进口熊猫
进口舒蒂尔
path=r“C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\20xx01”
os.chdir(路径)
扩展名='csv'
所有_文件名=[glob.glob('*.{}'.格式(扩展名))中的i代表i]
组合的\u csv=pd.concat([pd.read\u csv(f)表示所有文件名中的f])
组合到csv(“201401.csv”,索引=False,编码=utf-8-sig”)
grab1=r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\20xx01\201401.csv'
move1=r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\2014\2014-01.csv'
shutil.移动(抓取1,移动1)
fd=pd.read_csv(r'C:\Users\jonathan.capanda\Documents\Fishing_DataBase\gfw_data\100_deg_data\daily_csvs\2014\2014-01.csv')
df=pd.数据帧(fd)

irishsea=df[(df.lat_-bin>=5300)&(df.lat_-bin=-650)&(df.lon_-bin=-5300)&(df.lat_-bin=-650)&(df.lon_-bin您可以执行以下操作。请记住,第二个范围数(停止值)需要比预期值高一个值

for year in range(2014, 2020):
    for month in range(1, 13):
        if month < 10:
            month_as_string = "0" + str(month)
        else:
            month_as_string = str(month)
        date = "%s\%s-%s" % (year, year, month_as_string)
        pathname = 'YOUR\FILEPATH\HERE' + date + 'irishsea.csv'
适用于范围内的年份(2014年、2020年):
对于范围(1,13)内的月份:
如果月份<10:
月份作为字符串=“0”+str(月份)
其他:
月份作为字符串=str(月份)
date=“%s\%s-%s”%(年、年、月作为字符串)
路径名='YOUR\FILEPATH\HERE'+日期+'irishsea.csv'

您可以在此处了解有关字符串格式的更多信息。您可以执行以下操作。请记住,范围的第二个数字(停止值)需要比您预期的高一个值

for year in range(2014, 2020):
    for month in range(1, 13):
        if month < 10:
            month_as_string = "0" + str(month)
        else:
            month_as_string = str(month)
        date = "%s\%s-%s" % (year, year, month_as_string)
        pathname = 'YOUR\FILEPATH\HERE' + date + 'irishsea.csv'
适用于范围内的年份(2014年、2020年):
对于范围(1,13)内的月份:
如果月份<10:
月份作为字符串=“0”+str(月份)
其他:
月份作为字符串=str(月份)
date=“%s\%s-%s”%(年、年、月作为字符串)
路径名='YOUR\FILEPATH\HERE'+日期+'irishsea.csv'

您可以在此处了解有关字符串格式的更多信息

为什么要合并csv,然后手动移动它们?您可以进一步扩展一下逻辑吗?嗨,我一年中的每一天都有一个文件,因此我正在合并,以将每年的数据最小化为每月格式,以使其更可用。我使用shutil.move移动文件,因此不需要手动移动ally,我需要移动它,因为文件列表位于一个文件夹中,在合并导出文件后,该文件夹将结束,但我希望合并后的文件在过滤之前放置在另一个文件中,这也需要移动。我知道有点冗长。为了完全清楚,您阅读了按天拆分为单个文件的文件,然后您需要分区将它们放入月度文件夹结构中,是吗?日常文件会发生什么情况。文件中是否有日期列,或者您是否从文件名中获取日期?为什么您要合并csv,然后手动移动它们?您能否进一步扩展逻辑?嗨,我一年中的每一天都有一个文件,因此我正在合并以将数据减少到一个月我使用shutil.move来移动文件,所以不需要手动操作,我需要移动它,因为文件列表位于一个文件夹中,在合并导出文件后,该文件夹将结束,但我希望合并后的文件在过滤之前放置在另一个文件中,这也需要移动。我知道有点冗长w、 为了清楚起见,你读入的文件按天分割成一个文件,然后你想把它们分割成一个月文件夹结构,是吗?每天的文件会发生什么情况。文件中有日期栏吗?或者你是从文件名中获取日期吗?谢谢你的示例,我会尝试并报告回来。没问题。让我看看知道你是否有问题。谢谢你的例子,我会试一试并向你汇报。没问题。如果你有问题,请告诉我。