导入许多txt文件并将df命名为filename

时间:2018-03-13 18:48:37

标签: python pandas dataframe glob

我有一个充满txt文件的文件夹,我想将每个文件作为自己的df导入。我想调用每个df与txt文件相同的名称。

这是我必须在所有文件中阅读的内容:

    def bMono = Mono.just(new B())
    when:
    def serviceResponse = aService.toTestMethod(a, bMono)

    then:
    1 * service.method(_ as Service,_ as B)

而不是每个df被称为import pandas as pd import glob path =r'D:\Path\to\ files' allFiles = glob.glob(path + "/*.txt") for file_ in allFiles: df = pd.read_csv(file_,index_col=None, header=0) 我希望它是df文件名。

2 个答案:

答案 0 :(得分:1)

一种选择是创建一个字典并像普通数组一样访问每个字典。

for f in files:
    dfs.append(pd.read_csv(f, index_col=None, header=0))
# use dfs[0]

或者,如果您知道每个文件名都是唯一的,请创建一个字典映射文件名到dataframes

dfs = {}
for f in files:
    dfs[f] = pd.read_csv(f, index_col=None, header=0))
# do stuff to dfs['filename']

然而,最pythonic的方式是词典理解

dfs = { f: pd.read_csv(f, index_col=None, header=0) for f in all_files }

注意,我认为我将变量名称更改为更加pythonic的约定。所以要么记得将我的变量名改回你的名字,要么遵守!

答案 1 :(得分:0)

您可以使用exec获得所需内容,如第一个答案Using a string variable as a variable name中所述,但这不是一个好的解决方案,我建议使用字典

import pandas as pd
import glob

path =r'D:\Path\to\ files' 
allFiles = glob.glob(path + "/*.txt")
df_dict = {}
for file_ in allFiles:
    df_dict[_file] = pd.read_csv(file_,index_col=None, header=0)