Pandasの要素指定・置換

# はじめに
Pandasで要素を指定したり、要素の値を置換する方法をまとめる。

# 目次
+ [要素・範囲指定](#要素範囲指定)
+ [値の置換](#値の置換)

## 要素・範囲指定


種類         |対象    |指定方法|スライス , リスト
-------------|-----|-----|-----
df.loc[]     |範囲 , 複数|ラベル|〇
df.iloc[]    |範囲 , 複数|番号|〇
df.at[]      |要素|ラベル|-
df.iat[]     |要素|番号|-

```python:
import pandas as pd

df = pd.DataFrame({
	 'White':{'A':1,'B':2,'C':3,'D':4,'E':5}
	,'Black':{'A':10,'B':20,'C':30,'D':40,'E':50}
	,'Red'  :{'A':100,'B':200,'C':300,'D':400,'E':500}
	,'Green':{'A':1000,'B':2000,'C':3000,'D':4000,'E':5000}
	,'Blue' :{'A':10000,'B':20000,'C':30000,'D':40000,'E':50000}
	})


print(df)
#    White  Black  Red  Green   Blue
# A      1     10  100   1000  10000
# B      2     20  200   2000  20000
# C      3     30  300   3000  30000
# D      4     40  400   4000  40000
# E      5     50  500   5000  50000


#df.loc[]:行列名で範囲指定①-------------------
print(df.loc['A':'C','Red':'Blue'])

#    Red  Green   Blue
# A  100   1000  10000
# B  200   2000  20000
# C  300   3000  30000


#df.loc[]:行列名で範囲指定②-------------------
print(df.loc['B':,:'Green'])

#    White  Black  Red  Green
# B      2     20  200   2000
# C      3     30  300   3000
# D      4     40  400   4000
# E      5     50  500   5000


#df.loc[]:行列名で範囲指定③-------------------
print(df.loc[['B','C'],:'Green'])
#    White  Black  Red  Green
# B      2     20  200   2000
# C      3     30  300   3000


#df.iloc[]:行列番号で範囲指定①---------------
print(df.iloc[0:3,2:5])

#    Red  Green   Blue
# A  100   1000  10000
# B  200   2000  20000
# C  300   3000  30000


#df.iloc[]:行列番号で範囲指定②---------------
print(df.iloc[1:,:3])

#    White  Black  Red
# B      2     20  200
# C      3     30  300
# D      4     40  400
# E      5     50  500

#df.iloc[]:行列番号で範囲指定③---------------
print(df.iloc[1:4,[0,2,4]])

#    White  Red   Blue
# B      2  200  20000
# C      3  300  30000
# D      4  400  40000

#df.at[]:行列名で要素指定--------------------
print(df.at['D','White'])

# 4


#df.iloc[]:行列番号で要素指定----------------
print(df.iat[3,4])

# 40000
```

[戻る](#目次)

## 値の置換
replace()で変換ができる。引数に```inplace=True```を指定すれば、元のDataFrameが置換される。

```python:
import pandas as pd

df = pd.DataFrame({
	 'White':{'A':1,'B':2,'C':3}
	,'Black':{'A':1,'B':2,'C':3}
	,'Red'  :{'A':100,'B':200,'C':300}
	})

print(df)

#    White  Black  Red
# A      1      1  100
# B      2      2  200
# C      3      3  300


# 全ての要素：一つの値だけ変更
print(df.replace(1,11))

#    White  Black  Red
# A     11     11  100
# B      2      2  200
# C      3      3  300


# 全ての要素：複数の値を同時に変更
print(df.replace({1:11,2:22}))

#    White  Black  Red
# A     11     11  100
# B     22     22  200
# C      3      3  300


# 全ての要素：複数の値を同じ値に変更
print(df.replace([1,2,3],99))

#    White  Black  Red
# A     99     99  100
# B     99     99  200
# C     99     99  300


# 列を指定：一つの値だけ変更
print(df.replace({'Black': {1:11}}) )

#    White  Black  Red
# A      1     11  100
# B      2      2  200
# C      3      3  300


# 列を指定：複数の値を同時に変更
print(df.replace({'Black': {1:11, 2:22}}) )

#    White  Black  Red
# A      1     11  100
# B      2     22  200
# C      3      3  300


# 複数を指定：複数の値を同時に変更
print(df.replace({'Black': {1:11, 2:22}, 'Red': {100:111, 200:222}} ) )

#    White  Black  Red
# A      1     11  111
# B      2     22  222
# C      3      3  300
```




[戻る](#目次)