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

时间:2016-07-31 22:23:35

标签: 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= 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]应该是每个循环的不同数值数据集

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:4)

创建一个列表并附加数据。

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]

答案 1 :(得分:0)

这样做:

paths = map('/home/subj{}'.format, ps)
datas = map(pd.read_csv, paths)

现在您有一个DataFrame列表,但是如果您想要单独的变量,您可以:

d1, d2, d3, d4 = datas