簡體   English   中英

我在列表中有多個數據框。 如何打印他們的名字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM