如何使用python在字符串参数中定义for循环中的函数

时间:2016-05-05 07:28:57

标签: python string

这是一个DateFrame,如下所示:

    df_12=df[df.index.year==2012]

我想得到一个系列df_X,X ='13','14','15',就像吼叫

    df_13,df_14...

事实上,我可以通过以下方式直接获取它:

   df_13=df[df.index.year==2013]
   df_14=df[df.index.year==2014]
   df_15=df[df.index.year==2015]
   df_16=df[df.index.year==2016]

但是,当X变得非常大时它会变得疯狂。所以,我尝试使用for循环,

  for x in ['13','14','15','16']:
      df_+x=df[df.index.year==int('20'+x)]

它引发了一个错误,我知道为什么我错了。 任何人都可以通过循环获得它吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

我不是专家,但我认为你可以使用词典,并做这样的事情:

import numpy as np
x=range(10)

name=[0]*len(x)
for i, number in enumerate(x):
    name[i]='df_{0}'.format(x[i])

year=range(2013,2023)

data=dict(zip(name,year))

所以,你可以回想起你的数据:

data['df_0']
Out[45]: 2013

实际上,我不知道你是否可以将它用于DataFrames ......

答案 1 :(得分:0)

您的问题是您不能在作业的左侧使用变量名称#include <stdio.h> #define MAX 100 int main(void){ int i, j, cnt = 1; int prim[MAX] = { 2 }; for(i=3; i<MAX; i++) { for(j=0; j<cnt; j++) { if(i % prim[j] == 0) { break; } } if(j == cnt) { prim[cnt++] = i; } } for(j=0; j<cnt; j++) { printf("%4d", prim[j]); } printf("\n"); return 0; }

@mgilson是对的,你应该真的创建一个日期框架的列表或词典。如果重复引用 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 太麻烦,

df_+x

整数键的输入不如字符串,即使用df[df.index.year==2012]df_ = {} for x in ['13','14','15','16']: df_[x]=df[df.index.year==int('20'+x)] # usage df_['13']

如果你真的绝对决定做一些可怕的事情,那么for x in [13,14,15,16]可以让你以dict的形式访问本地命名空间。

df_[13]

我的建议:就是不要!