Python 我在一个列表中有多个数据帧。如何打印他们的名字?

Python 我在一个列表中有多个数据帧。如何打印他们的名字?,python,pandas,Python,Pandas,我正在读取多个文件并将其添加到列表中: import pandas as pd import glob import ntpath path = r'C:\Folder1\Folder2\Folder3\Folder3' all_files = glob.glob(path + "/*.dat") #.dat files only mylist = [] for filename in all_files: name = ntpath.basename(filename) #

我正在读取多个文件并将其添加到列表中:

import pandas as pd
import glob
import ntpath


path = r'C:\Folder1\Folder2\Folder3\Folder3' 

all_files = glob.glob(path + "/*.dat") #.dat files only

mylist = []

for filename in all_files:
    name = ntpath.basename(filename) # for renaming the DF
    name = name.replace('.dat','') # remove extension
    try:
        name = pd.read_csv(filename, sep='\t', engine='python')
        mylist.append(name) 
    except:
        print(f'File not read:{filename}')
现在我只想在此列表中显示DFs

这就是我尝试过的:

for thing in mylist:
    print(thing.name)

AttributeError: 'DataFrame' object has no attribute 'name'

但这只是打印整个DF内容

这里,
name
是一个数据帧,而不是数据帧的名称

要向数据帧添加名称,请使用

df = pd.read_csv(filename, sep='\t', engine='python')
df_name="Sample name"
mylist.append({'data':df, 'name':df_name}) 

你可以用字典来解释

向dict写信:

import pandas as pd
import glob
import ntpath


path = r'C:\Folder1\Folder2\Folder3\Folder3' 

all_files = glob.glob(path + "/*.dat") #.dat files only

mydict = {}

for filename in all_files:
    name = ntpath.basename(filename) # for renaming the DF
    name = name.replace('.dat','') # remove extension
    try:
       mydict[name] = pd.read_csv(filename, sep='\t', engine='python')
    except:
        print(f'File not read:{filename}')
要再次读取df(如
filename1
),请执行以下操作:

或者在
mydict
中迭代所有df:

for df in mydict.values():
    # use df...
或:


将df添加到列表中。它不再有它的变量名了。如果需要,最好将它们添加到字典中,并使用名称作为键,使用df作为相应的值;对于路径中的文件名:mydict[filename]=pd.read\u csv(filename)
mylist.append((名称,文件名))字典方法有效。现在我需要弄清楚如何把它们从字典中去掉。:)请参阅下面的答案。我不认为这样做有效:
C:\Users\seanc\Anaconda3\lib\site packages\ipykernel\u launcher.py:9:UserWarning:Pandas不允许通过新属性名创建列-请参阅https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-如果uuuu name uuuuu='\uuuuuu main uuuuuu',则访问:
My bad
df.name
试图访问数据帧的一列。上述方法创建一个dict,其键为
data
name
>>> print(thing['name'])
Sample name
import pandas as pd
import glob
import ntpath


path = r'C:\Folder1\Folder2\Folder3\Folder3' 

all_files = glob.glob(path + "/*.dat") #.dat files only

mydict = {}

for filename in all_files:
    name = ntpath.basename(filename) # for renaming the DF
    name = name.replace('.dat','') # remove extension
    try:
       mydict[name] = pd.read_csv(filename, sep='\t', engine='python')
    except:
        print(f'File not read:{filename}')
df = mydict['filename1']
for df in mydict.values():
    # use df...
for key in mydict:
    print(key)
    df = mydict[key]
    # use df...