Python 如何在pandas的帮助下创建函数来读取文件夹中的所有文件,并为每个文件创建不同的数据帧?
我正在尝试创建一个python函数来帮助完成以下任务Python 如何在pandas的帮助下创建函数来读取文件夹中的所有文件,并为每个文件创建不同的数据帧?,python,python-3.x,pandas,function,for-loop,Python,Python 3.x,Pandas,Function,For Loop,我正在尝试创建一个python函数来帮助完成以下任务 从文件夹中读取.csv文件 使用为每个文件创建不同的数据框(数据框名称应与文件名相同) 创建所有已创建数据框的列表,并将其分配给变量(变量名称为文件夹名称) 下面是我正在尝试的代码: import pandas as pd import os def read_folder(): path = input('Please provide path name to read:') for file in range(100
- 从文件夹中读取.csv文件
- 使用为每个文件创建不同的数据框(数据框名称应与文件名相同)
- 创建所有已创建数据框的列表,并将其分配给变量(变量名称为文件夹名称)
import pandas as pd
import os
def read_folder():
path = input('Please provide path name to read:')
for file in range(1000):
if os.path.exists(path + '/' + str(file) + '.csv'):
file = pd.read_csv(path + '/' + str(file) + '.csv')
folderpath = (os.path.split(path)[1])
temp = []
temp.append(file)
print(temp)
else:
print('No file at given location')
我在这个网站上也尝试过不同的答案,但不知何故,大多数答案都有不同的目标。我正在运行上面的代码,因为它不适合我
我是否遗漏了上面代码中的某些内容?如果您想保留所有数据帧及其名称,那么首先您应该创建字典而不是列表,其次您应该在
之前为
-loop创建字典。如果您在中为循环创建临时,那么您会一次又一次地创建它,并删除以前的内容-因此最后只有临时中的最后一个数据帧
当你有了字典,你就可以得到它的键
来拥有所有的文件名
顺便说一句:最好在函数外部使用input()
并将path作为参数发送-这样您也可以使用文件中的path或sys.argv
或硬编码名称来测试它
如果您想保留所有数据帧及其名称,那么首先应该创建字典而不是列表,其次应该在for
-loop之前创建字典。如果您在中为循环创建临时,那么您会一次又一次地创建它,并删除以前的内容-因此最后只有临时中的最后一个数据帧
当你有了字典,你就可以得到它的键
来拥有所有的文件名
顺便说一句:最好在函数外部使用input()
并将path作为参数发送-这样您也可以使用文件中的path或sys.argv
或硬编码名称来测试它
“last commands exit对我不起作用”--这意味着什么?整个变量名应该是这样的…
是无用的。如果您确实需要按名称获取熊猫数据帧,请使用字典以名称存储熊猫数据帧。通常,这是一种考虑不周全的方法的标志,因为您的代码如何从文件中获取名称以用于代码中您的代码的temp
从不在外部使用,也不会在循环内部被删除/重置为空列表-您可能需要了解一些基本用法。。。。除此之外,您还将文件
用作整数和pd.read\u csv的结果。。坏的因果报应来自于重复使用这样的变量名。@PatrickArtner,我们不能在外部使用这个临时值,但我仍然得到所有创建的数据帧的列表,对吗?Temp
最多只能保存一个数据帧。。。如果你不明白为什么,回到最基本的问题上来。@PatrickArtner,我不是想在temp变量中保存多个数据帧,但我只是想在其中列出所有数据帧的名称。“last commands exit对我不起作用”--这意味着什么?整个变量名称应该是这样的…
是徒劳的。如果您确实需要按名称获取熊猫数据帧,请使用字典以名称存储熊猫数据帧。通常,这是一种考虑不周全的方法的标志,因为您的代码如何从文件中获取名称以用于代码中您的代码的temp
从不在外部使用,也不会在循环内部被删除/重置为空列表-您可能需要了解一些基本用法。。。。除此之外,您还将文件
用作整数和pd.read\u csv的结果。。坏的因果报应来自于重复使用这样的变量名。@PatrickArtner,我们不能在外部使用这个临时值,但我仍然得到所有创建的数据帧的列表,对吗?Temp
最多只能保存一个数据帧。。。如果你不明白为什么,回到最基本的问题上来。@PatrickArtner,我并不是想在temp变量中保存多个数据帧,但我只想列出其中所有数据帧的名称。
import pandas as pd
import os
# --- functions ---
def read_folder(path, min_number=0, max_number=1000):
all_dfs = dict()
for number in range(min_number, max_number):
filename = f'{number}.csv'
fullpath = os.path.join(path, filename)
if os.path.exists(fullpath):
all_dfs[filename] = pd.read_csv(fullpath)
else:
print('No file at given location')
return all_dfs
# --- main ---
all_folders = dict() # dictionary for all folders and filenames
path = input('Please provide path name to read:')
all_dfs = read_folder(path)
all_filenames = list(all_dfs.keys())
folder = os.path.split(path)[-1]
all_folders[folder] = all_filenames