初めに
pandas.DataFrameでcolumnsの抽出・削除・名前の変更方法についてまとめてみた。
目次
1.抽出
a.基本的な抽出(df['a'], df.loc, df.iloc 等)
b.複数のカラムをまとめて抽出
c.カラム名に特定の文字を含むカラムのみを抽出
2.削除
3.名前の変更
a.基本的な変更(カラムを指定して変更、全て変更)
b.全てのカラム名に文字を追加する
今回使用するdataは以下の通り
以下、dataが変更される時があるが、常にこのデータにリセットして使用しているものとする。
import pandas as pd
df = pd.DataFrame({'a':[1,11],
'b':[2,22],
'c':[3,33],
'ab':[4,44]},
index=['one','two'])
a | b | c | ab | |
---|---|---|---|---|
one | 1 | 2 | 3 | 4 |
two | 11 | 22 | 33 | 44 |
##1.抽出
#####a.基本的な抽出(df['a'], df.loc, df.iloc 等)
・カラム名で抽出
df['a']
# one 1
# two 11
# Name: a, dtype: int64
df.a
# one 1
# two 11
# Name: a, dtype: int64
df.loc[:,'a']
# one 1
# two 11
# Name: a, dtype: int64
・カラムの番号で抽出
df.iloc[:,0]
# one 1
# two 11
# Name: a, dtype: int64
#####b.複数のカラムをまとめて抽出
df[['a','b']]
a | b | |
---|---|---|
one | 1 | 2 |
two | 11 | 22 |
df.loc[:,'a':'b']
a | b | |
---|---|---|
one | 1 | 2 |
two | 11 | 22 |
df.iloc[:,0:3]
a | b | c | |
---|---|---|---|
one | 1 | 2 | 3 |
two | 11 | 22 | 33 |
#####c.カラム名に特定の文字を含むカラムのみを抽出(aをカラム名に含むカラムのみ抽出)
columns_name = df.columns
selected_col = [col for col in columns_name if 'a' in col]
df[selected_col]
a | ab | |
---|---|---|
one | 1 | 4 |
two | 11 | 44 |
##2.削除
・元データに変更を加えないとき
df.drop('a', axis=1)
b | c | ab | |
---|---|---|---|
one | 2 | 3 | 4 |
two | 22 | 33 | 44 |
・元データを変更する時、inplace=Trueを加える
df.drop('a', axis=1, inplace=True)
b | c | ab | |
---|---|---|---|
one | 2 | 3 | 4 |
two | 22 | 33 | 44 |
・まとめて削除する時
df.drop(['a','b'], axis=1, inplace=True)
c | ab | |
---|---|---|
one | 3 | 4 |
two | 33 | 44 |
##3.名前の変更
#####a.基本的な変更
・元のデータに変更を加えないとき
df.rename(columns={'a':'A'})
A | b | c | ab | |
---|---|---|---|---|
one | 1 | 2 | 3 | 4 |
two | 11 | 22 | 33 | 44 |
・元のデータに変更を加えるときは、inplace=Trueを加える。
df.rename(columns={'a':'A'}, inplace=True)
df
A | b | c | ab | |
---|---|---|---|---|
one | 1 | 2 | 3 | 4 |
two | 11 | 22 | 33 | 44 |
・複数のカラム名もまとめて変更できる
df.rename(columns={'a':'A'
'b':'B'}, inplace=True)
df
A | B | c | ab | |
---|---|---|---|---|
one | 1 | 2 | 3 | 4 |
two | 11 | 22 | 33 | 44 |
・全てのカラムを変更する場合(元データも変更される)
※データのカラム数と新たに指定するカラム名の数は同じでなければいけない
df.columns = ['A','B','C','AB']
A | B | C | AB | |
---|---|---|---|---|
one | 1 | 2 | 3 | 4 |
two | 11 | 22 | 33 | 44 |
#####b.全てのカラム名に文字を追加する
df_name = 'new_' + df.columns
df.columns = df_name
df
new_a | new_b | new_c | new_ab | |
---|---|---|---|---|
one | 1 | 2 | 3 | 4 |
two | 11 | 22 | 33 | 44 |
以上です。
間違いや追加した方がいい内容があればご教授ください。