Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中从循环索引创建新变量_Python - Fatal编程技术网

如何在python中从循环索引创建新变量

如何在python中从循环索引创建新变量,python,Python,我有以下代码 ps=[1,2,3,4] for subj in ps: num=num+1 datapath='/home/subj%d' %(int(subj)) if num==1: d1= pd.read_csv(datapath, 'words.csv') if num==2: d2= pd.read_csv(datapath, 'words.csv') if num==3: d3

我有以下代码

 ps=[1,2,3,4]
 for subj in ps:
    num=num+1 
    datapath='/home/subj%d' %(int(subj))
     if num==1: 
       d1= pd.read_csv(datapath,  'words.csv')

     if num==2: 
       d2= pd.read_csv(datapath,  'words.csv')

     if num==3: 
       d3= pd.read_csv(datapath,  'words.csv')

     if num==4: 
       d4= pd.read_csv(datapath,  'words.csv')
我想对其进行简化,即将csv文件分配给一个新的d[num]变量,如以下所示,该变量不起作用

ps=[1,2,3,4]

for subj in ps:

    num=num+1 

    datapath='/home/subj%d' %(int(subj))

    d[num] = pd.read_csv(datapath,  'numbers.csv')
对于每个循环,d[num]应该是不同的数值数据集

有什么建议吗?谢谢

只要这样做:

paths = map('/home/subj{}'.format, ps)
datas = map(pd.read_csv, paths)
现在,您有了一个数据帧列表,但如果需要单独的变量,您可以:

d1, d2, d3, d4 = datas
只要这样做:

paths = map('/home/subj{}'.format, ps)
datas = map(pd.read_csv, paths)
现在,您有了一个数据帧列表,但如果需要单独的变量,您可以:

d1, d2, d3, d4 = datas

创建一个列表并附加数据

ps=[1,2,3,4]
d = []
for subj in ps:
    datapath = '/home/subj%d' % (subj)
    d.append(pd.read_csv(datapath, 'numbers.csv'))
您可以使用
d[0]
d[3]
访问数据

使用列表理解将导致以下代码:

ps = [1,2,3,4]
d = [pd.read_csv('/home/subj%d' %(subj), 'numbers.csv') for subj in ps]

创建一个列表并附加数据

ps=[1,2,3,4]
d = []
for subj in ps:
    datapath = '/home/subj%d' % (subj)
    d.append(pd.read_csv(datapath, 'numbers.csv'))
您可以使用
d[0]
d[3]
访问数据

使用列表理解将导致以下代码:

ps = [1,2,3,4]
d = [pd.read_csv('/home/subj%d' %(subj), 'numbers.csv') for subj in ps]

如果您使用的是Python 3.x,则必须使用
datas=list(map(pd.read\u csv,path))
。@Matthias:这是事实,尽管OP几乎肯定使用Python 2,因为他们使用的是古老的
%
格式化程序。您必须使用
datas=list(map(pd.read\u csv,path))
如果您使用的是Python 3.x.@Matthias:没错,尽管OP几乎肯定使用的是Python 2,因为他们使用的是古老的
%
格式化程序。但是,如果数据文件是从h5py加载的数据集,我该怎么做呢?上述代码在这种情况下不起作用。我不熟悉h5py,但这是执行此任务的标准解决方案。您可能想问一个包含更新信息的新问题,在这个问题中,请解释为什么不能使用带有
append
的简单循环。但是,如果数据文件是从h5py加载的数据集,我该如何处理?上述代码在这种情况下不起作用。我不熟悉h5py,但这是执行此任务的标准解决方案。您可能想问一个包含更新信息的新问题,在这个问题中,请解释为什么不能使用带有
追加的简单循环。