python - 使用 function 或 var 创建数据框列/索引名称

标签 python python-3.x function pandas

我有一系列循环,可以根据不同的数据帧计算不同品牌、不同时期的销售额。 这是我想要优化的代码部分:

#shname,dep,lname,y - come from itterables

var=shname+dep+'ytd'+lname
if dep == 'PY': ytd=data.loc[(Data.Brand==lname) & (Data['PY_YTD?']==True),['Sales']].sum()
if dep == 'NY': ytd=data.loc[(Data.Brand==lname) & (Data['NY_YTD?']==True),['Sales']].sum()
exec('%s=%d' % (var,ytd))

如您所见,数据框中有一个列名称恰好不同,具体取决于报告年份(PY - 当前,NY - 下一个):

Data['PY_YTD?']==True
Data['NY_YTD?']==True

所以我简单地使用了IF。但是我想知道是否有一种方法可以使用某种函数来根据当前迭代的值计算列名

我想它应该看起来像这样:

def YEAR (y):
    if y = 'PY': return Data['PY_YTD?']==True
    if y = 'NY': return Data['NY_YTD?']==True

ytd=data.loc[(Data.Brand==lname) & (YEAR(var)),['Sales']].sum()s

非常感谢您的帮助

最佳答案

我想你可以将 var 插入到更大的字符串中:

data.loc[
   (Data.Brand == lname) & Data['{}_YTD?'.format(var)],   # var + '_YTD?'
   ['Sales']
].sum()

关于python - 使用 function 或 var 创建数据框列/索引名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49330175/

相关文章:

python - 将具有 latin-1 字符的字节解码为具有十进制表示的字符串

django - 如何在 django 中创建这样一个带有复选框的表?

python - 为什么这种使用函数参数的方式不起作用?

c++ - 引用函数 "int &foo();"是如何工作的?

javascript - 在方法 JQuery 之外使用我的变量

python - 如何以正确的顺序在 Python 中构建嵌套字典理解?

python - psycopg2:在没有索引行的查询中使用列表

javascript - 模块模式中的简单闭包示例不起作用

python - 如何取消选中pyqt4中选中的单选按钮

python - Gunicorn 不会启动 Flask 应用程序,因为 "Application object must be callable"