gpt4 book ai didi

python - 根据列表更改文件名字符串的函数

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:35 25 4
gpt4 key购买 nike

我有多个文件夹,其中包含 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我想自动化它,只需根据列表中的项目更改路径中的字符串(仅 r'F:\Sheyenne\Statistics\IDL_stats\ 之后的部分),即可在下一个文件夹上运行相同的代码。

我希望这是有道理的。

最佳答案

创建一个函数:

def get_df(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)
return pd.concat(dataframe)

并将其用于您的所有路径:

import os

paths = [os.path.join(r'F:\Sheyenne\Statistics\IDL_stats', name)
for name in ['NDVI', 'NDII']]
dfs = [get_df(path) for path in paths]

关于python - 根据列表更改文件名字符串的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com