我已经有了这个代码,可以找到文件夹中的所有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数据帧中返回匹配项?
答案 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