通过在Python中添加全局变量名和字符串来创建df列名

时间:2016-09-22 15:16:53

标签: python python-3.x pandas

我有一个全局变量 split_ask_min = 'Minimum_Spend'

我想在我的df中创建一个新变量并命名为' Minimum_Spend_Sum'并使其成为Minimum_Spend的总和。

var_programs['split_ask_min+ _Sum'] = var_programs[split_ask_min].groupby(X['NAME']).transform('sum') 我在创建变量名时遇到问题。它应该是

split_ask_min+ '_Sum' 等于 Minimum_Spend_Sum

但是如果我编码

var_programs['split_ask_min+ '_Sum'']

我收到了错误

2 个答案:

答案 0 :(得分:1)

要在df中创建新列,您可以传递构造的字符串以向df添加新列:

In [239]:
split_ask_min = 'Minimum_Spend'
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df[split_ask_min + '_Sum'] = 0
df

Out[239]:
          a         b         c  Minimum_Spend_Sum
0 -0.113483 -0.487551  0.276176                  0
1  0.143454 -1.322578 -2.040297                  0
2 -0.100320  0.716255  1.109432                  0
3 -1.260516 -0.560957  0.007871                  0
4  0.497407 -2.031782  0.933199                  0

答案 1 :(得分:0)

除非您确实需要创建变量,否则请使用字典来存储值。

substring

否则您可以使用function capitalize(str) { return str.charAt(0).toUpperCase() + str.substring(1); } var thingy = { charAt: function() { return { toUpperCase: function() { return 40; } } }, substring: function() { return 2; } }; console.log(capitalize(thingy)); // 42

df = {}
split_ask_min = 'Minimum_Spend'
df[split_ask_min + '_Sum'] = ...
print(df)