全局变量和.format()

时间:2018-04-05 15:18:04

标签: python pandas string.format

我编写了一个生成PDF报告的python脚本。我不得不做一些数据操作来更改我使用的每个数据集中的列名。

我的问题是,有没有办法设置一个全局变量然后在Target_Hours_All.rename()里面使用.format()???

我已经对每个列名进行了硬编码。

例如,Target_Hours_All.rename(columns = {'VP_x':'VP', '2018 Q1 Target Hours':'hourTarget18Q1'}, inplace = True)

但是,我希望能够在每个季度运行此功能,而无需更新每个df.rename。相反,我希望将全局变量放在脚本的顶部并更改它们。

任何帮助都将非常感谢!!!

1 个答案:

答案 0 :(得分:0)

最简单的方法?将要更改的字符串从函数调用中移动到变量中,然后使用Target_Hours_All.rename()中的变量 这使代码更容易阅读。

我只能猜测Target_Hours_All.rename的作用。但我的猜测是它需要“列”中的哈希值并用值替换键。正确的吗?

所以可以将你的专栏写成:

columns = {}
vpl = 'VP_x'
vpr = 'VP'
columns[vpl] = vpr
target_hours_l = '20{year} {quarter} Target Hours'.format(year='18', quarter='Q1')
target_hours_r = 'hourTarget{year}{quarter}'.format(year='18',quarter='Q1')
columns[target_hours_l] = target_hours_r
Target_Hours_All.rename(columns = columns, ... )

是的,这是更多的代码,我不应该命名我的列而是其他的东西。所以有改进的方法。但它显示了如何使用.format()进行通话。