【发布时间】:2016-01-28 01:18:42
【问题描述】:
我有多个包含 csv 文件的文件夹,我正在创建笛卡尔列表并针对所有文件组合运行一些统计信息。
到目前为止,我是这样执行的:
import pandas as pd
import os
import scipy as sp
from scipy import stats
import glob
import itertools
#
#
path =r'F:\Sheyenne\Statistics\IDL_stats\NDVI' # use your path
allfiles = glob.glob(path + "/*.csv")
result = list(itertools.product(allfiles,allfiles))
#
dataframe=[]
for files in result:
x=(pd.read_csv(files[0], names = ['Percent', 'Value']))
z=x.Percent
y=(pd.read_csv(files[1], names = ['Percent', 'Value']))
d=y.Percent
stats2=sp.stats.ks_2samp(z,d)
g=files, stats2
df=pd.DataFrame(data=list(sum(g, ())), index=['File1', 'File2', 'D', 'p_value']).transpose()
dataframe.append(df)
df=pd.concat(dataframe)
print df
但我的问题是我需要在路径中导航到多个文件夹。所以r'F:\Sheyenne\Statistics\IDL_stats\NDVI' 只是我需要执行此代码的众多文件夹之一。有没有办法创建一个函数并更改路径的字符串来做到这一点?因此,如果下一个文件夹位置是 r'F:\Sheyenne\Statistics\IDL_stats\NDII' 并且我有一个名称为 NDVI 和 NDII 的列表,我想通过简单地更改字符串来自动化它以在下一个文件夹上运行相同的代码(仅在 @ 之后的部分987654326@) 基于列表中的项目的路径内。
我希望这是有道理的。
【问题讨论】: