从同一父目录中的多个子文件夹复制多个 csv 文件,然后合并以创建组合的最终 .csv

问题描述 投票:0回答:1

这似乎是一件容易做的事情,但我似乎总是做不好。

我有一个父目录“Sessions”,其中包含许多子文件夹“day*”->“weather”,其中包含类似的 csv 文件“weather*.csv”。我想循环遍历目录结构中的每个子文件夹以复制该特定的“weather*.csv”文件,以便在父目录中的目标位置创建一个主 csv 文件。

目录/文件/源路径为:

会话/day1/天气/weather1.csv,
会话/day2/天气/weather2.csv,
会话/day3/天气/weather3.csv,
Sessions/day4/weather/weather4.csv...等等直到 150。

目的地路径:

会话/weather_All.csv

weather_All.csv 是一个包含每天天气串联的组合文件。

我尝试过使用 os.walk、shutil、pandas concat,但我尝试的每一次尝试都无法正常工作。我在这里查看了多个问题和答案,并尝试将代码块拼凑在一起以获得我正在寻找的输出,但没有成功。

python pandas shutil os.walk
1个回答
0
投票

这样的事情怎么样?

这不会创建每个 csv 的重复项。我知道您说过您正在尝试复制它们,但似乎您实际上并不想要副本,您只是这样做作为获取最终文件的一个步骤。如果这是不正确的,我很抱歉。

在这段代码中,我们创建了一个空的 main_df,它只是我们想要的框架 - 当然,您需要将实际的列名称放入该代码中(可能通过查看单个 csv 之一手动进行,希望如此)有效)。

然后我们使用

pathlib.Path.rglob()
迭代会话文件夹并提取以 .csv 结尾的所有内容。我们将其读入数据帧,然后将其附加到 main 中。

浏览完所有文件后,我们将 main_df 保存为 csv。

from pathlib import Path
import pandas as pd

main_df = pd.DataFrame(columns=['the','columns','that','exist','in','each','csv'])

for file in Path('Sessions').rglob('*.csv')
    df = pd.read_csv(file)
    main_df = pd.concat([master_df,df])

master_df.to_csv(r'Sessions/weather_all.csv')
© www.soinside.com 2019 - 2024. All rights reserved.