如何应用此pandas.Series代码来比较文件夹中的多个文件

时间:2017-08-15 04:40:50

标签: python-3.x pandas csv for-loop dataframe

我已经有了这个代码,可以找到文件夹中的所有csv文件,并在以下文件中读取它们:

directory = os.fsencode(folderpath)
os.chdir(directory)
for file in os.listdir(directory):
    filename = os.fsdecode(file)
    if filename.endswith(".csv"):
        df1 = pd.read_csv(filename)[columnName]

现在我的代码可以找到我输入的每个csv文件中找到的所有行:

    match = pd.Series(list(set(file1.columnName) & set(file2.columnName) & set(file3.columnName) & set(file4.columnName)))

如何合并上面的两段代码,找到文件夹中每个csv文件中找到的所有行,并在单个pandas数据帧中返回匹配项?

1 个答案:

答案 0 :(得分:1)

我认为您可以先创建所有Series的列表,然后按reduce动态查找匹配项:

#data from previous answer
vals = []
directory = os.fsencode(folderpath)
os.chdir(directory)
for file in os.listdir(directory):
    filename = os.fsdecode(file)
    if filename.endswith(".csv"):
        df1 = pd.read_csv(filename)['Name']
        vals.append(df1)

from functools import reduce
a = reduce(lambda x, y: set(x) & set(y), vals)
print (a)
{'Ben', 'Neil'}

df = pd.DataFrame({'col':list(a)})
print (df)
    col
0   Ben
1  Neil