連番の変数を作成するときの繰り返しをどうすればよろしいですか?

投稿者: Anonymous

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

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

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

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']

解決

for文で書きたい

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

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]
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *