如何迭代20个.csv文件并在每个文件上执行一些计算[计算部分,在代码中显示]并在python中创建单独的.scv输出文件?

时间:2018-04-10 18:20:11

标签: python python-3.x pandas dataframe

import pandas as pd 
A=pd.read_csv("C:/Users/amulya/Desktop/graves lab/Mani/HIDDEN WORDS/Hidden_word_4.csv")
df1=pd.DataFrame(A)
B=pd.read_csv("C:/Users/amulya/Desktop/graves lab/words.csv")
df2=pd.DataFrame(B)
C=df1[df1.col1.isin(df2.col1)]``
df3=pd.DataFrame(C)
df3.to_csv("C:/Users/amulya/Desktop/graves lab/Mani/HIDDEN WORDS/out4.csv", encoding='utf-8', index=False)

每次命名文件的insteaad,我想迭代20个文件

1 个答案:

答案 0 :(得分:1)

如果df2是静态的,并且您只想对20个文件进行循环,那么您可以使用osre来减少所需的代码量写。

import pandas as pd
import os
import re

path = "C:/Users/amulya/Desktop/graves lab/Mani/HIDDEN WORDS/"
df2 = pd.read_csv("C:/Users/amulya/Desktop/graves lab/words.csv")

files = [file for file in os.listdir(path) if 'Hidden_word_' in file]

for file in files:
    num = re.search('.*_(\d{1,2})', file)[1]
    df1 = pd.read_csv(path + file)
    df3 = df1[df1.col1.isin(df2.col1)]
    df3.to_csv(path+'out'+num+'.csv')

这假设路径中只有名称中包含'Hidden_word_'的文件是您要分析的文件,但如果不是这样,您可以修改列表创建或思考关于文件命名和组织,以便更方便这样的事情。