pandas 从同一父目录中的多个目录复制多个csv文件,然后进行连接以创建组合的final .csv

rn0zuynd  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(107)

这似乎是一件容易的事情,但没有失败,我似乎不能得到它的权利。
我有一个父目录“Sessions”,其中包含许多“day*“->“weather”,其中包含一个类似的csv文件,“weather*.csv“。我想循环通过目录结构中的每个子文件夹来复制特定的“weather*.csv”文件,以便在父目录中创建一个主csv文件。
目录/文件/源路径为:
Sessions/day1/weather/weather1.csv,
Sessions/day2/weather/weather2.csv,
Sessions/day3/weather/weather3.csv,
Sessions/day 4/weather/weather4.csv....等等,直到150。
目标路径:
会议/天气/天气_所有.csv
现在,我想用150多个单独的天气 *.csv填充天气目录
范例:

import os
import glob
import pandas as pd

#connect to the directory where the list of all weather csv now live.
os.chdir("/Sessions/Weather/")

#define the extension type of file we want to concatenate
extension = '.csv'

#search for a all the files that match the extension/format type csv
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

#combine all the files in the directory
combined_Weather = pd.concat([pd.read_csv(f) for f in all_filenames])

#export newly concatenated combined 
combined_Weather.to_csv('/Sessions/Weather/weather_All.csv', index= False, encoding='utf-8-sig')

字符串
我尝试过使用os.walk,shutil,pandas concat,但是每次尝试都不能正常工作。我看过这里的多个问题和答案,并试图拼凑代码块来获得我想要的输出,但是没有成功。

huwehgph

huwehgph1#

像这样的呢?
这不会创建每个单独的csv的副本.我知道你说你试图复制它们,但它似乎可能你并不真的想要副本,你只是这样做作为一个步骤,以获得最终文件.我道歉,如果这是不正确的.
在这段代码中,我们创建了一个空的main_df,它只是我们想要的东西的 backbone -当然,你需要把实际的列名放在那段代码中(可能是手动的,通过查看一个单独的CSV,希望这能起作用)。
然后,我们使用pathlib.Path.rglob()遍历sessions文件夹,取出以. 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])
    # if you really want copies of each csv, you can do a df.to_csv(filepath) here to copy the data, but not technically the file

master_df.to_csv(r'Sessions/weather_all.csv')

字符串

相关问题