我希望能够在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')]
我已经尝试了一些变体,它们都会引发错误。有什么建议吗?
答案 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
的中位数,所以它应该快一点。