![](/img/trans.png)
[英]I have a list which has been created from another list. However, I do not want two names repeating after each other. How can I do that?
[英]I have multiple dataframes in a list. How to print their names?
我正在讀取多個文件,並將它們添加到列表中:
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}')
現在,我只想在此列表中顯示DF。
這是我嘗試過的:
for thing in mylist:
print(thing.name)
AttributeError: 'DataFrame' object has no attribute 'name'
和
for item in mylist:
print(item)
但這只是打印整個DF內容。
name = pd.read_csv(filename, sep='\\t', engine='python') mylist.append(name)
在這里, name
是一個數據框,而不是您的數據框的名稱。
要將名稱添加到數據框,請使用
df = pd.read_csv(filename, sep='\t', engine='python')
df_name="Sample name"
mylist.append({'data':df, 'name':df_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(例如filename1
):
df = mydict['filename1']
或迭代mydict
所有df:
for df in mydict.values():
# use df...
要么:
for key in mydict:
print(key)
df = mydict[key]
# use df...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.