54186


以下のようなコードで連番の変数（data0～2, x0～2, y0～2,
Id0～2）を作りたいのですが、全て書いていくのが手間なのでfor文で書きたいと思っております。もう書いちゃってますが今後のために…

しかし、そのような連番の変数宣言を検索してもなかなか出てきません。

format関数で作成することも考えたのですが、文字列ではなく変数として宣言したいです。  
そうするにはどのように行えばよろしいでしょうか？  
よろしくお願いいたします。

[code]

    data0 = data.loc[data['cluster'] == 0]
    data1 = data.loc[data['cluster'] == 1]
    data2 = data.loc[data['cluster'] == 2]
    
    data0 = data0.reset_index(drop=True)
    data1 = data1.reset_index(drop=True)
    data2 = data2.reset_index(drop=True)
    
    x0=data0['PCA1']
    x1=data1['PCA1']
    x2=data2['PCA1']
    y0=data0['PCA2']
    y1=data1['PCA2']
    y2=data2['PCA2']
    Id0=data0['ID']
    Id1=data1['ID']
    Id2=data2['ID']
    
[/code]


CC BY-SA 4.0
2019-04-15T08:38:10.223
54183
2019-04-15T09:40:11.900
30590
question
python
連番の変数を作成するときの繰り返しをどうすればよろしいですか？


> for文で書きたい

記載されたコードに相当する内容を、リスト内包表記を活用することで以下のように書き換えることができます。

[code]

    data_list = [data.loc[data['cluster'] == idx].reset_index(drop=True) for idx in range(3)]
    
    xs = [d['PCA1'] for d in data_list]
    ys = [d['PCA2'] for d in data_list]
    Ids = [d['ID'] for d in data_list]
    
[/code]


CC BY-SA 4.0
2019-04-15T09:40:11.900
54186
2019-04-15T09:40:11.900
29826
54183
answer