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 baddf.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...