如何应用此 pandas.Series 代码来比较文件夹中的多个文件
Posted
技术标签:
【中文标题】如何应用此 pandas.Series 代码来比较文件夹中的多个文件【英文标题】:How to apply this pandas.Series code to compare several files within a folder 【发布时间】:2018-01-23 00:06:57 【问题描述】:我已经有了这段代码,它可以在一个文件夹中找到所有 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】:我认为您可以先创建所有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
【讨论】:
以上是关于如何应用此 pandas.Series 代码来比较文件夹中的多个文件的主要内容,如果未能解决你的问题,请参考以下文章
如何从pandas Series类继承以简化Series类型的子集?