基本
df['カラム名のリスト']
全てこれ
かぎかっこ内にカラム名のリストを指定する形へもっていく
column名で取得
import pandas as pd
import numpy as np
# DataFrame作成
df = pd.DataFrame([[25,'pika',88,'Electric',np.NaN,np.NaN],
[131,'rara',80,'Water','Ice',np.NaN],
[143,'gon',82,'Normal',np.NaN,np.NaN],
[3,'fushi',84,'Grass','Poison',np.NaN],
[6,'kage',84,'Fire','Flying',np.NaN],
[9,'kame',84,'Water',np.NaN,np.NaN]],
columns=['no','name','level','type1','type2','helditem'])
# nameとlevelの列(カラム)抽出
print(df[['name','level']])
"""
name level
0 pika 88
1 rara 80
2 gon 82
3 fushi 84
4 kage 84
5 kame 84
"""
列番号で取得
列番号でカラム名を取得して列を抽出する
# DataFrameは上記のを利用
# nameとlevelの列(カラム)抽出
print(df[df.columns[1:3]])
"""
name level
0 pika 88
1 rara 80
2 gon 82
3 fushi 84
4 kage 84
5 kame 84
"""
要は
df.columns[1:3]
が
['name','level']
となるため、結局column名で取得と同じとなる
1列だけ抽出するときの注意
df['name']
だとSeriesで出力となる
# DataFrameは最初のを利用
# name列(カラム)抽出
print(df['name'])
"""
0 pika
1 rara
2 gon
3 fushi
4 kage
5 kame
Name: name, dtype: object
"""
typeを確認すると
print(type(df['name']))
"""
<class 'pandas.core.series.Series'>
"""
DataFrameで1列を抽出したいときは
df[['name']]
かぎかっこで括ってリストの形にすること
列番号で取得したいときも同じ
df[df.columns[1]]
だとSeries
df[[df.columns[1]]]
だとDataFrame
飛び飛びの複数列を指定
カラム名で指定する場合
そのままリストに直打ちすれば大丈夫
# DataFrameは最初のを利用
# noとtype1,type2の列(カラム)抽出
print(df[['no','type1','type2']])
"""
no type1 type2
0 25 Electric NaN
1 131 Water Ice
2 143 Normal NaN
3 3 Grass Poison
4 6 Fire Flying
5 9 Water NaN
"""
列番号で指定する場合
# DataFrameは最初のを利用
# ライブラリ追加
from operator import itemgetter
# noとtype1,type2の列(カラム)抽出
print(df[list(itemgetter(0,3,4)(df.columns))])
"""
no type1 type2
0 25 Electric NaN
1 131 Water Ice
2 143 Normal NaN
3 3 Grass Poison
4 6 Fire Flying
5 9 Water NaN
"""
または
# DataFrameは最初のを利用
# noとtype1,type2の列(カラム)抽出
column_selection = np.array([1,0,0,1,1,0]) # 抽出する列の指定(1の列を抽出)
print(df[np.array(df.columns)[column_selection==1]])
"""
no type1 type2
0 25 Electric NaN
1 131 Water Ice
2 143 Normal NaN
3 3 Grass Poison
4 6 Fire Flying
5 9 Water NaN
"""
これらのリスト作成方法についてはまた解説する
コメント