如何在pandas数据帧中生成动态变量名

时间:2016-01-18 16:05:10

标签: python

我在python中有一个变量(值可能会改变)

a = 6

现在取决于我必须从K-means clustering生成6个群集的值 它为我提供了数组

中的标签
y_km
Out[36]: array([2, 5, 5, 2, 5, 0, 0, 1, 1, 4, 3, 4, 1, 0, 2, 2])

cluster_0 = np.where(y_km == 0)
cluster_1 = np.where(y_km == 1)
cluster_2 = np.where(y_km == 2)
cluster_3 = np.where(y_km == 3)
cluster_4 = np.where(y_km == 4)
cluster_5 = np.where(y_km == 5)

然后我将数组中每个标签的位置存储到不同的变量中。我想自动执行此过程,以便我不必显式编写变量名称的代码(cluster_0,cluster_1,cluster_2...)

for i in range(a):
    cluster_'%d'%i = np.where(y_km == i)

我在上面做,但这给了我语法错误。 然后我在数据框tsp_data_unique

中定义了一列
tsp_data_unique['Clusters'] = 'Null'

然后我在跟踪以在数据帧中分配相应的群集标签。

tsp_data_unique['Clusters'].iloc[cluster_0] = 'Cluster 1'
tsp_data_unique['Clusters'].iloc[cluster_1] = 'Cluster 2'
tsp_data_unique['Clusters'].iloc[cluster_2] = 'Cluster 3'
tsp_data_unique['Clusters'].iloc[cluster_3] = 'Cluster 4'
tsp_data_unique['Clusters'].iloc[cluster_4] = 'Cluster 5'
tsp_data_unique['Clusters'].iloc[cluster_5] = 'Cluster 6'

我可以自动执行上述过程。

2 个答案:

答案 0 :(得分:2)

通常最好只使用dict(),然后制作动态变量名称'而是字典的键。你可以使用:

clusters = {}
for i in range(a):
    clusters['cluster_{}'.format(i)] = np.where(y_km == i)

然后,您可以使用例如clusters['cluster_1']

访问字典中的值

答案 1 :(得分:2)

我建议您将群集存储在字典中: 代码就像:

clusters = dict()
for i in range(a):
    clusters[i] = np.where(y_km == i)