我一直在尋找答案,但并不滿意。我不想將所有 csv 檔案存盤在字典中或附加到單個資料框中。
我有一個包含 10 個 csv 檔案的檔案夾。我想為每個 csv 檔案創建一個單獨的資料框。
我能夠創建一個字典,其中包含表示檔案名的鍵和表示其資料的值,但我想將其進一步分解為單獨的資料幀。
import pandas as pd
import numpy as np
import os
import glob
path = r'C:\Users\.....\files'
csv_files = glob.glob(os.path.join(path_new, '*.csv'))
files_name = os.listdir(path_new)
d = {os.path.splitext(os.path.basename(f))[0] : pd.read_csv(f) for f in glob.glob(os.path.join(path, '*.csv'))}
這會創建一個字典,我可以通過呼叫字典的鍵來訪問單獨的資料幀。
我通過定義一個讀取 csv 的函式來嘗試第二種方法:
def read_files(name, path_final):
name = pd.read_csv(path_final)
return name
for csvs in files_name:
name = csvs.split('.')[0]
path_final = os.path.join(path, csvs)
read_files(name, path_final)
我嘗試了第三種方法,但它也無濟于事:
for each_file in files_name:
with open(os.path.join(path_new, each_file)) as f:
each_file = pd.read_csv(f)
print(each_file)
有沒有辦法動態創建單獨的資料框?
到目前為止,我已經提到了以下鏈接:
- 如何從檔案夾中讀取每個檔案并為每個檔案創建單獨的資料框?
- 從多個資料幀的字典中提取資料幀
- 從資料框 Python 字典中獲取單獨的資料框
uj5u.com熱心網友回復:
globals()回傳當前模塊變數的字典。您可以通過在以下位置創建鍵來動態創建新變數,而不是在第一種方法中創建字典globals():
for f in glob.glob(os.path.join(path, '*.csv'):
variable_name = os.path.splitext(os.path.basename(f))[0]
globals()[variable_name] = pd.read_csv(f)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446230.html
