我正在嘗試使用 pandas 和 os 從所選目錄中獲取 CSV 檔案并迭代洗掉指定的行,因為它們是以我不喜歡的形式生成的。在迭代之后,我希望輸出的 CSV 具有相同的名稱 后綴,以表明已經執行了迭代。
經過長時間的中斷,我又回到了 Python,但這是我目前所擁有的:
DIR = 'Dummy_Folder/'
JV_suffix = "Current-Voltage Data.csv"
# For each file name in the chosen directory (DIR)
for filename in os.listdir(DIR):
# If file name ends with chosen suffix perform...
if filename.endswith(JV_suffix):
# Read the original csv file InputName
data = pd.read_csv(filename,header=None)
# Defining the rows that we want to delete from the file
trim = [0,1,2,len(data)-1,len(data)-2,len(data)-3]
# Deleting these rows and defining new csv
trim_data = data.drop(trim,axis=0)
# Making data frame with trimmed csv
df = pd.DataFrame(trim_data)
# Outputting df to CSV with suffix of '_number'
df.to_csv('DIR/filename_{}'.format(filename),index=False)
else:
continue
當我在虛擬資料上運行它時會拋出錯誤 FileNotFoundError: [Errno 2] No such file or directory: 'Dummy_Current-Voltage Data.csv'
感謝您抽出時間來閱讀!
uj5u.com熱心網友回復:
這可能是關于檔案相對路徑的錯誤。
我認為您的檔案夾Dummy/位于 python 專案路徑上。如果正確找到檔案夾,則檔案夾內任何檔案的正確相對路徑應該是Dummy/filename.
可以使用os.path.join(foldername,filename)加入檔案夾名和檔案名。
uj5u.com熱心網友回復:
感謝 qouify 和 Sam 的建議,這解決了問題,同時將輸出 CSV 行更改為df.to_csv('trimmed_{}'.format(filename),index=False). 我認為在檔案名中包含 DIR 會導致問題。我附上下面的整個腳本作為其他有類似查詢的人的演示
import pandas as pd
import os, os.path
DIR = 'Dummy_Folder/'
# For each file name in the chosen directory (DIR)
for filename in os.listdir(DIR):
# If file name ends with chosen suffix perform...
if filename.endswith("Current-Voltage Data.csv"):
# Read the original csv file
data = pd.read_csv(os.path.join(DIR, filename),header=None)
# Defining the rows that we want to delete from the file
trim = [0,1,2,len(data)-1,len(data)-2,len(data)-3]
# Deleting these rows and defining new csv
trim_data = data.drop(trim,axis=0)
# Making data frame with trimmed csv
df = pd.DataFrame(trim_data)
df.to_csv('trimmed_{}'.format(filename),index=False)
else:
continue
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337214.html
