제목 그대로 특정 열을 인덱스로 사용할 수 있도록 한다. 원본은 변경하지 않으며 새 DF를 반환한다.
DF.set_index("열이름") DF.set_index([열, 열])
열을 여러개 지정하면 multi index라고 한다.
set_index를 쓰면 기존의 index는 삭제된다.
import pandas as pd
warship_data = [
["Dresden", "Germany", "Cruiser", 1],
["Karlsruhe", "Germany", "Cruiser", 3],
["Königsberg", "Germany", "Cruiser", 4],
["Kaiser", "Germany", "Battleship", 3],
["Bayern", "Germany", "Battleship", 5],
["König", "Germany", "Battleship", 4],
["Bismarck", "Germany", "Battleship", 7],
["Saint-Louis", "USA", "Cruiser", 2],
["Fubuki", "Japan", "Destoyer", 5],
["Nagato", "Japan", "Battleship", 6],
["Vanguard", "UK", "Battleship", 7],
["Clemson", "UK", "Destroyer", 3],
["Belfast", "UK", "Cruiser", 6],
["Le Fantasque", "France", "Destroyer", 7]
]
df = pd.DataFrame(warship_data,
columns=["Name", "Country", "Type", "Tier"])
df_name = df.set_index("Name")
df_multi = df.set_index(["Name", "Country"])
print("< 기본 index >")
print(df)
print("\\n< Name index >")
print(df_name)
print("\\n< Multi Index : Name, Country >")
print(df_multi)
< 기본 index >
Name Country Type Tier
0 Dresden Germany Cruiser 1
1 Karlsruhe Germany Cruiser 3
2 Königsberg Germany Cruiser 4
3 Kaiser Germany Battleship 3
4 Bayern Germany Battleship 5
5 König Germany Battleship 4
6 Bismarck Germany Battleship 7
7 Saint-Louis USA Cruiser 2
8 Fubuki Japan Destoyer 5
9 Nagato Japan Battleship 6
10 Vanguard UK Battleship 7
11 Clemson UK Destroyer 3
12 Belfast UK Cruiser 6
13 Le Fantasque France Destroyer 7
< Name index >
Country Type Tier
Name
Dresden Germany Cruiser 1
Karlsruhe Germany Cruiser 3
Königsberg Germany Cruiser 4
Kaiser Germany Battleship 3
Bayern Germany Battleship 5
König Germany Battleship 4
Bismarck Germany Battleship 7
Saint-Louis USA Cruiser 2
Fubuki Japan Destoyer 5
Nagato Japan Battleship 6
Vanguard UK Battleship 7
Clemson UK Destroyer 3
Belfast UK Cruiser 6
Le Fantasque France Destroyer 7
< Multi Index : Name, Country >
Type Tier
Name Country
Dresden Germany Cruiser 1
Karlsruhe Germany Cruiser 3
Königsberg Germany Cruiser 4
Kaiser Germany Battleship 3
Bayern Germany Battleship 5
König Germany Battleship 4
Bismarck Germany Battleship 7
Saint-Louis USA Cruiser 2
Fubuki Japan Destoyer 5
Nagato Japan Battleship 6
Vanguard UK Battleship 7
Clemson UK Destroyer 3
Belfast UK Cruiser 6
Le Fantasque France Destroyer 7
index의 배열을 새롭게 지정할 수 있다. 기존 행보다 더 많은 행을 넣어줬을 경우 모든 값이 NaN으로 들어간다.
NaN이외에 새로운 값을 초기화 하려면 fill_value옵션을 사용한다.
import pandas as pd
warship_data = [
["Dresden", "Germany", "Cruiser", 1],
["Karlsruhe", "Germany", "Cruiser", 3],
["Königsberg", "Germany", "Cruiser", 4]
]
df = pd.DataFrame(warship_data,
columns=["Name", "Country", "Type", "Tier"])
print("< 기본 index >\\n", df)
df2 = df.reindex([1, 2, 3, 4, 5], fill_value=0)
print("\\n< 변경 index >\\n", df2)
< 기본 index >
Name Country Type Tier
0 Dresden Germany Cruiser 1
1 Karlsruhe Germany Cruiser 3
2 Königsberg Germany Cruiser 4
< 변경 index >
Name Country Type Tier
1 Karlsruhe Germany Cruiser 3
2 Königsberg Germany Cruiser 4
3 0 0 0 0
4 0 0 0 0
5 0 0 0 0
제목 그대로이다.
import pandas as pd
warship_data = [
["Dresden", "Germany", "Cruiser", 1],
["Karlsruhe", "Germany", "Cruiser", 3],
["Königsberg", "Germany", "Cruiser", 4],
["Kaiser", "Germany", "Battleship", 3],
["Bayern", "Germany", "Battleship", 5],
["König", "Germany", "Battleship", 4],
["Bismarck", "Germany", "Battleship", 7],
["Saint-Louis", "USA", "Cruiser", 2],
["Fubuki", "Japan", "Destoyer", 5],
["Nagato", "Japan", "Battleship", 6],
["Vanguard", "UK", "Battleship", 7],
["Clemson", "UK", "Destroyer", 3],
["Belfast", "UK", "Cruiser", 6],
["Le Fantasque", "France", "Destroyer", 7]
]
df = pd.DataFrame(warship_data,
columns=["Name", "Country", "Type", "Tier"])
df.set_index("Name", inplace=True)
print(df)
print()
df.reset_index(inplace=True)
print(df)
Country Type Tier
Name
Dresden Germany Cruiser 1
Karlsruhe Germany Cruiser 3
Königsberg Germany Cruiser 4
Kaiser Germany Battleship 3
Bayern Germany Battleship 5
König Germany Battleship 4
Bismarck Germany Battleship 7
Saint-Louis USA Cruiser 2
Fubuki Japan Destoyer 5
Nagato Japan Battleship 6
Vanguard UK Battleship 7
Clemson UK Destroyer 3
Belfast UK Cruiser 6
Le Fantasque France Destroyer 7
Name Country Type Tier
0 Dresden Germany Cruiser 1
1 Karlsruhe Germany Cruiser 3
2 Königsberg Germany Cruiser 4
3 Kaiser Germany Battleship 3
4 Bayern Germany Battleship 5
5 König Germany Battleship 4
6 Bismarck Germany Battleship 7
7 Saint-Louis USA Cruiser 2
8 Fubuki Japan Destoyer 5
9 Nagato Japan Battleship 6
10 Vanguard UK Battleship 7
11 Clemson UK Destroyer 3
12 Belfast UK Cruiser 6
13 Le Fantasque France Destroyer 7
행을 기준으로 DF의 순서를 정렬한다. ascending옵션으로 오름(내림)차순을 결정할 수 있다.