连接两个变量名并调用结果变量

时间:2015-03-19 16:07:28

标签: python-2.7 pandas

我希望能够在pandas中为变量名添加后缀,并使该后缀能够更改。在下面的代码行中,我希望掩码变量名称附加var" lastyear"。

dataavg1 = [np.median(df.query('mask == "%s"'%j)['continuousvar']) 
            for j in ('Value1','Value2')]

基本上是这样的:

dataavg1 = [np.median(df.query('("mask"+lastyear) == "%s"'%j)['continuousvar']) 
            for j in ('Value1','Value2')]

我已经尝试了一些变体,它们都会引发错误。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在将字符串传递给df.query之前,执行所有字符串格式

dataavg1 = [np.median(df.query('(mask%s) == "%s"'%(lastyear, j))['continuousvar']) 
            for j in ('Value1','Value2')]

或者,您可以使用

col = 'mask{}'.format(lastyear)
dataavg1 = [np.median(df.loc[df[col] == j, 'continuousvar']) 
            for j in ('Value1','Value2')]

我认为这样做会好一些,因为前者计算df所有列的中位数,然后删除除continuousvar之外的所有列。 后者只计算continuousvar的中位数,所以它应该快一点。