簡體   English   中英

如何在 python 的 for 循環中僅遍歷包含某些字符串的文件?

[英]How to iterate through only files containing certain strings in for loop in python?

我試圖弄清楚如何在我的 for 循環代碼中僅使用包含某些字符串的文件,但我在思考如何排序時遇到了麻煩。

我有以下代碼:

folder = 'Path/to/My/Folder'

for f in folder:
    df = pd.read_csv(f)
    df_new = df['Value'] * 2
    df_new.to_csv('Path/to/My/Folder/Name.csv')

What this does is go to my folder and FOR EACH file in my folder, all.csv files, open the.csv file as a dataframe, and multiply the 'Value' column by 2, and then send that new dataframe to an output. csv 文件。 但是,我想做的只是迭代文件夾中包含某些字符串的文件,所以對於這個例子,只有在字符串包含“藍色”、“紅色”或“綠色”時才使用該文件。 然后我想 append 這些顏色名稱作為字符串到 ouput.csv 文件,所以我知道哪個是哪個。 這就是我的想法:

l = ['Blue', 'Red', 'Green']

folder = 'Path/to/My/Folder'

for f in folder IF contains l:
    df = pd.read_csv(f)
    df_new = df['Value'] * 2
    df_new.to_csv(f'Path/to/My/Folder/Name_{i}.csv')

所以現在我列出了感興趣的字符串。 所以我的代碼現在說循環遍歷文件夾中的文件來執行操作,但只使用那些文件名中包含“藍色”、“紅色”或“綠色”的文件。 然后最后,append 顏色名稱為 output.csv 文件名,所以我知道哪個 Z78E6261F6398FD141DB 文件是哪個。 這是正確的方法嗎? 我對如何使用正確的語法在邏輯上實際構建它感到困惑。

為此,您可以嘗試使用glob 在那里,您可以指定文件名應匹配的模式。

如果性能不是問題,那么此代碼應該適合您:

colors = ['Blue', 'Red', 'Green']
folder = 'Path/to/My/Folder'

for f in folder:
    for color in colors:
        if color in f:
            df = pd.read_csv(f)
            df['Value'] = df['Value'] * 2
            df.to_csv(f'Path/to/My/Folder/Name_{color}.csv')

如果您看到任何警告,請使用 pd.options.mode.chained_assignment = None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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