如何在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,但这是执行此任务的标准解决方案。您可能想问一个包含更新信息的新问题,在这个问题中,请解释为什么不能使用带有追加的简单循环。