リスト内包表記Tips

Table of Content

if elseを含むリスト内包表記

次の様に簡単に書けます.
[cc]
dfc = [np.nan if pd.isnull(i) else "{0:7d}".format(int(i)) \
for i in df[col].values]
[/cc]
ただし,dfはpandasのDataFrameで,colは一つのカラム名の変数で,本来7桁の整数ですが,欠損値が含まれているため,floatになっているものとし,これをNaNと整数表記を含むobjectに変換しています.
似たような例で複数のリストを同時に扱う場合はzip関数を使います.
[cc]
dfc = [np.nan if pd.isnull(i1) or pd.isnull(i2) else \
"{0:2d}{1:03d}".format(int(i1),int(i2)) for \
i1,i2 in zip(df[col1].values, df[col2].values)]
[/cc]

Matrixからベクトルを抜き出す

リストをネストしたマトリックスから列のベクトルを抜き出すのはリスト内包を使うと簡単です.リスト内包でマトリックスMから行row(ベクトル)を順番に抜き出し,rowの1つ目の要素を抜き出すにはrow[0]となり,それをすべての行rowについて繰り返せば列columnのベクトルを抜き出したことになります.
[cc]
In [1]: M=[[1, 2, 3],
...: [4, 5, 6],
...: [7, 8, 9]]

In [2]: M[0]
Out[2]: [1, 2, 3]

In [3]: [row[0] for row in M]
Out[3]: [1, 4, 7]
[/cc]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください