Python 3.x 如何应用pandas.Series代码比较文件夹中的多个文件
我已经有了以下代码,可以在文件夹中查找所有csv文件并将其读入:Python 3.x 如何应用pandas.Series代码比较文件夹中的多个文件,python-3.x,pandas,csv,for-loop,dataframe,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] 现在,我有了可以在我
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文件中的所有行,并在单个数据帧中返回匹配项?我认为您可以先创建所有
系列的列表
,然后通过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
如果您能展示这样一个数据帧的示例,以及您期望的结果是什么,这将非常有用。这听起来很像你上一个问题的意思。鉴于你选择了公认的答案,我上次认为你的意思显然是错的。通过使用一个明显的例子,让你清楚地知道你在寻找什么,这对你是有帮助的。