python 列表中的字符串格式变量名称
python string formatting variables' names from a list
大家好我正在尝试定义一组变量,我想格式化它们的名称。
设置为:
features=['Gender','Age','Rank'] + other11columns #selected columns of my data
In [1]:data['Gender'].unique()
Out[1]: array([0, 1], dtype=int64)
In [2]:data['Age'].unique()
Out[2]: array([10, 20, 30, 40, 50], dtype=int64)
In [3]:data['Rank'].unique()
Out[3]: array([0, 1, 2, 3, 4, 5, 6], dtype=int64)
.....
首先我想为每个标签设置一些空数据框。我想要这样的东西:
report_Gender
Out[3]:
Prediction Actual
0 NaN NaN
1 NaN NaN
report_Age
Out[5]:
Prediction Actual
10 NaN NaN
20 NaN NaN
30 NaN NaN
40 NaN NaN
50 NaN NaN
report_Rank
Out[6]:
Prediction Actual
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 NaN NaN
.......
以下代码不起作用,但表明我想做什么
for i in range(len(features)-1):
report_features[i]=pd.DataFrame(index=data[feature[i]].unique(),columns=['Prediction','Actual'])
我尝试使用 %s 操作来处理字符串格式,但没有弄清楚如何输入变量的名称...感谢任何帮助:)
动态创建全局变量可能会很棘手。如果将它放在更小的范围内 ==> 任何对象,例如字典,就会容易得多。你可以这样实现你想要的
my_dictionary = dict()
for f in features:
my_dictionary['report_{}'.format(f)] = pd.DataFrame(index=data[f].unique(),columns=['Prediction','Actual'])
例如,您可以像 my_dictionary['report_Gender']
那样访问 df。
另一种方法是创建 class:
class Reports:
pass
for f in features:
setattr(Reports, 'report_{}'.format(f), pd.DataFrame(index=data[f].unique(),columns=['Prediction','Actual'])
然后以 Reports.report_Gender
等方式访问...
如果你真的不想这样做,你可以使用 setattr 方法,但我建议听从 Ravi Patel 的建议
for i in range(len(features)-1):
setattr(object_method_or_module_your_variable_belong,
name_for_you_varialbe,
pd.DataFrame(index=data[feature[i]].unique(),columns=['Prediction','Actual'])
大家好我正在尝试定义一组变量,我想格式化它们的名称。
设置为:
features=['Gender','Age','Rank'] + other11columns #selected columns of my data
In [1]:data['Gender'].unique()
Out[1]: array([0, 1], dtype=int64)
In [2]:data['Age'].unique()
Out[2]: array([10, 20, 30, 40, 50], dtype=int64)
In [3]:data['Rank'].unique()
Out[3]: array([0, 1, 2, 3, 4, 5, 6], dtype=int64)
.....
首先我想为每个标签设置一些空数据框。我想要这样的东西:
report_Gender
Out[3]:
Prediction Actual
0 NaN NaN
1 NaN NaN
report_Age
Out[5]:
Prediction Actual
10 NaN NaN
20 NaN NaN
30 NaN NaN
40 NaN NaN
50 NaN NaN
report_Rank
Out[6]:
Prediction Actual
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 NaN NaN
.......
以下代码不起作用,但表明我想做什么
for i in range(len(features)-1):
report_features[i]=pd.DataFrame(index=data[feature[i]].unique(),columns=['Prediction','Actual'])
我尝试使用 %s 操作来处理字符串格式,但没有弄清楚如何输入变量的名称...感谢任何帮助:)
动态创建全局变量可能会很棘手。如果将它放在更小的范围内 ==> 任何对象,例如字典,就会容易得多。你可以这样实现你想要的
my_dictionary = dict()
for f in features:
my_dictionary['report_{}'.format(f)] = pd.DataFrame(index=data[f].unique(),columns=['Prediction','Actual'])
例如,您可以像 my_dictionary['report_Gender']
那样访问 df。
另一种方法是创建 class:
class Reports:
pass
for f in features:
setattr(Reports, 'report_{}'.format(f), pd.DataFrame(index=data[f].unique(),columns=['Prediction','Actual'])
然后以 Reports.report_Gender
等方式访问...
如果你真的不想这样做,你可以使用 setattr 方法,但我建议听从 Ravi Patel 的建议
for i in range(len(features)-1):
setattr(object_method_or_module_your_variable_belong,
name_for_you_varialbe,
pd.DataFrame(index=data[feature[i]].unique(),columns=['Prediction','Actual'])