けむブログ

データ分析に関する気付きや学びを記録するブログ

pandas ilocで隣り合わない複数列を取得する方法

やりたいこと

python

pandas のDataFrameで、隣り合わせでない、飛んだ列を取得する

df = pd.DataFrame(
              data=[[10, 5, 3, 1],[2, 4, 5, 2],
                    [1, 3, 4, 2],[1, 5, 3, 4],
                    [7, 6, 5, 4]])

たとえばこのdataframeの場合で1列目と、3列目~4列目のデータを取り出したい

方法

ilocを使う場合、飛んだ列の選択ができない気がするので、 バラバラにとってきたあと横に結合する

df
t1 = df.iloc[:,:1]
t2 = df.iloc[:,3:]

pd.concat([t1,t2], axis=1)

※axis=1 でindex番号をkeyにして紐付ける

できなかったこと

t = df[df.iloc[:,:1] + df.iloc[:,3:]]
t