2021年2月3日水曜日

列操作 - pandas -python

■インポート


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     あ

■列操作


・列を抜き出す

df = df[ ['列名2','列名3'] ]
print(df)

#出力
#    列名2 列名3
# 0  aaa   a
# 1  bbb   2
# 2  ccc   あ
[ ]に列名のリストを指定
 列は指定した順になるので並べ替えにも使える

df = df[ ['列名2'] ]
print(type(df))

df = df['列名2']
print(type(df))

#出力
# <class 'pandas.core.frame.DataFrame'>
# <class 'pandas.core.series.Series'>
 1列抜き出す場合もリストで指定する
 リストでないとシリーズとして抜き出される

・列を削除する

df = df.drop(['列名2'], axis=1)
print(df)

#出力
#    列名1 列名3
# 0  111   a
# 1  222   2
# 2  333   あ
.drop()の第一引数に削除したい列名のリスト
 第二引数にaxis=1を指定(デフォルト(axis=0)だと行の削除になる)
 ※1列だけ削除する場合はリストでなくても可

・列を追加する

df['列名4'] = ['b','3','い']
print(df)

#出力
#    列名1  列名2 列名3 列名4
# 0  111  aaa   a   b
# 1  222  bbb   2   3
# 2  333  ccc   あ   い
[ ]で追加したい列名を指定
 そこに値のリストを代入する
 ※リストのサイズは行数と合わせる

df['列名4'] = 'd'
print(df)

#出力
#    列名1  列名2 列名3 列名4
# 0  111  aaa   a   d
# 1  222  bbb   2   d
# 2  333  ccc   あ   d
 値だけ指定した場合は全行で同じ値となる

df['列名4'] = df['列名1'] * 3
print(df)

#出力
#    列名1  列名2 列名3  列名4
# 0  111  aaa   a  333
# 1  222  bbb   2  666
# 2  333  ccc   あ  999
 元の列を使い演算することも可能

・列の値を変更する

df['列名3'] = [444, 555, 666]
print(df)

#出力
#    列名1  列名2  列名3
# 0  111  aaa  444
# 1  222  bbb  555
# 2  333  ccc  666
[ ]で変更したい列名を指定
 そこに値のリストを代入する

df['列名3'] = df['列名1'] * 3
print(df)

#出力
#    列名1  列名2  列名3
# 0  111  aaa  333
# 1  222  bbb  666
# 2  333  ccc  999
 元の列を使い演算することも可能

・列名を変更する

df = df.rename(columns={'列名1':'col1','列名3':'col3'})
print(df)

#出力
#    col1  列名2 col3
# 0   111  aaa    a
# 1   222  bbb    2
# 2   333  ccc    あ
.rename()columns=辞書型で指定
 keyが元の列名、valueが変更後の列名
 ※columns=を付けないとインデックスの名前変更になる

df.columns = ['col1','col2','col3']
print(df)

#出力
#    col1 col2 col3
# 0   111  aaa    a
# 1   222  bbb    2
# 2   333  ccc    あ
 全ての列名を変える場合はdf.columnsにリストを代入でも可
 ※リストのサイズは列数に合わせる

0 件のコメント:

コメントを投稿