■インポート
import pandas as pd以降の呼び出し簡略化のため「pd」と名前を付ける
■テーブル作成
df = pd.DataFrame({'列名1':[111,222,333],'列名2':['aaa','bbb','ccc'],'列名3':['a',2,'あ']})
print(df)
#出力
# 列名1 列名2 列名3
# 0 111 aaa a
# 1 222 bbb 2
# 2 333 ccc あ
■行操作
・1行だけ抜き出す
row = df.loc[1] print(row) print(row['列名2']) #出力 # 列名1 222 # 列名2 bbb # 列名3 2 # Name: 1, dtype: object # # bbb.loc[]にインデックス名を指定
シリーズの行版のようなもの
さらに[ ]で列名を指定して値を抜き出せる
row = df.iloc[2] print(row) #出力 # 列名1 333 # 列名2 ccc # 列名3 あ # Name: 2, dtype: object.iloc[]に行数(0始まり)を指定しても同様
※この例ではインデックスと行数が等しいのでわかりにくい
・行の値を変更する
df.loc[0] = [444,'ddd','い'] print(df) #出力 # 列名1 列名2 列名3 # 0 444 ddd い # 1 222 bbb 2 # 2 333 ccc あ.loc[]にリストを代入
※リストのサイズは列数に合わせる
・インデックスを変更する
df.index = ['x','y','z'] print(df) #出力 # 列名1 列名2 列名3 # x 111 aaa a # y 222 bbb 2 # z 333 ccc あdf.indexにリストを代入
※リストのサイズは行数に合わせる
df.index= ['x','y','z'] print(df) df = df.reset_index() print(df) #出力 # 列名1 列名2 列名3 # x 111 aaa a # y 222 bbb 2 # z 333 ccc あ # # index 列名1 列名2 列名3 # 0 x 111 aaa a # 1 y 222 bbb 2 # 2 z 333 ccc あ.reset_index()でインデックスを通し番号で振り直せる
前のインデックスは列として追加される
.reset_index(drop=True)とすると前のインデックスは残らない
・フィルター
df = df[ df['列名1']>200 ] print(df) #出力 # 列名1 列名2 列名3 # 1 222 bbb 2 # 2 333 ccc あ[ ]にフィルター条件を記載
列はシリーズで指定
df = df[ (df['列名1']>200)&(df['列名3']=='あ') ] print(df) #出力 # 列名1 列名2 列名3 # 2 333 ccc あ複数条件は「&(and条件)」か「|(or条件)」を使用
■参考
・フィルターについて詳しく
データフレームをフィルターするにはdf[ ]に値がTrueかFalseのリストを指定する
df = df[ [False, True, False] ] print(df) #出力 # 列名1 列名2 列名3 # 1 222 bbb 2リストは残したい行をTrueとし、行数と同じサイズにする
print(df['列名1']>200) #出力 # 0 False # 1 True # 2 True # Name: 列名1, dtype: bool実際に条件部分だけ見ると、TrueかFalseのリストとなっている
0 件のコメント:
コメントを投稿