
DataFrame β’ μΈλ±μ± μμλ μΈλ±μλ₯Ό νμ©νμ§ μμ μ κ·Ό λ°©λ²μ μμ보μλλ°, μ΄λ²μλ μΈλ±μμ κ΄νμ¬ μ΄ν΄λ³΄μ.
λ°μ΄ν°νλ μμ κΈ°λ³Έ μΈλ±μ±
- μ΄μΈλ±μ±
- νλμ μ΄λ§ μ ν :
df['μ΄μ΄λ¦']- μ¬λ¬ κ° μ΄ μ ν :
df[['μ΄μ΄λ¦1', 'μ΄μ΄λ¦2',...]]- νμΈλ±μ± : μ°μλ ꡬκ°μ νλ°μ΄ν° μ ν(μ¬λΌμ΄μ±)
df['ν_μμμμΉ':'ν_λμμΉ']- κ°λ³μμ μ κ·Ό : μ νν μ΄μμ μ§μ λ ꡬκ°μ νλ°μ΄ν° μ ν
df['μ΄μ΄λ¦']['ν_μμμμΉ':'ν_λμμΉ']df['μ΄μ΄λ¦']['μμ_νμ΄λ¦':'λ_νμ΄λ¦']
λ°μ΄ν°νλ μμ νΉλ³ν μΈλ±μ(indexer) :
loc,iloc
- numpyμ κ°μ΄ μΌν(,)λ₯Ό μ¬μ©νμ¬ νκ³Ό μ΄μ λμμ μΈλ±μ±νλ 2μ°¨μ μΈλ±μ±
[ν μΈλ±μ€, μ΄ μΈλ±μ€]νμloc: λΌλ²¨κ° κΈ°λ°μ 2μ°¨μ μΈλ±μ±(λͺ μΉκΈ°λ° μΈλ±μ±)iloc: μμλ₯Ό λνλ΄λ μ μ κΈ°λ°μ 2μ°¨μ μΈλ±μ±(μμΉκΈ°λ° μΈλ±μ±)
λͺ μΉκΈ°λ° μΈλ±μ
- df.loc[νμΈλ±μ± κ°]
- df.loc[νμΈλ±μ± κ°,μ΄μΈλ±μ± κ°]
μΈλ±μ± κ° μ ν
- μΈλ±μ€ λ°μ΄ν° : [index name] λλ [index_name, column name]
- μΈλ±μ€ λ°μ΄ν° μ¬λΌμ΄μ€
- κ°μ ν μΈλ±μ€λ₯Ό κ°λ Boolean μ리μ¦(ν μΈλ±μ±μΈ κ²½μ°)
- 쑰건μΌλ‘ μΆμΆ κ°λ₯(λΆλ¦° μΈλ±μ±)
- μ κ°μ λ°ννλ ν¨μ
κ²°κ³Όκ° λμ μΆλ ₯ μ€μ
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity='all'
μμ λ°μ΄ν°νλ μ
df = pd.DataFrame(data=np.arange(10, 22).reshape(3, 4),
index='a b c'.split(),
columns='A B C D'.split())
df
- μΆλ ₯
dataframe.loc['νμΈλ±μ€κ°']# 'a' ν μ ν
df['a': 'a'] # λ°μ΄ν°νλ μ
df.loc['a'] # μ리μ¦
df.loc[['a']] # λ°μ΄ν°νλ μ
- μΆλ ₯
A 10
B 11
C 12
D 13
Name: a, dtype: int64
dataFrame.loc['μ²μ νμΈλ±μ€κ°' : 'λνμΈλ±μ€κ°']# aνλΆν° cνκΉμ§
df.loc['a': 'c']
- μΆλ ₯
# aνκ³Ό cν
df.loc['a': 'c']
- μΆλ ₯
μμ λ°μ΄ν°νλ μ
df2 = pd.DataFrame(data=np.arange(10, 26).reshape(4, 4),
columns='a b c d'.split())
df2
- μΆλ ₯
# '2' ν
df2.loc[2]
- μΆλ ₯
a 18
b 19
c 20
d 21
Name: 2, dtype: int64
# '2' νμ κΉμ§
df2[:2]
- μΆλ ₯
dataFrame[[νμ΄λ¦1, νμ΄λ¦2,... ]]# '2'νκ³Ό '0'ν
df2.loc[[2, 0]]
- μΆλ ₯
df μ Aμ΄ μ κ°μ΄ 15 λ³΄λ€ ν° ν μΆμΆ# κΈ°λ³Έ μΈλ±μ± μ¬μ©
df[df['A'] > 15]
loc μ ν μ°μ μΈλ±μμ΄κΈ°μ μ μμμ ν μ 체 : , λ€ μμμ μ ν μ΄ 'A' λ₯Ό μ
λ ₯νλ€.# loc μΈλ±μ μ¬μ©
df[df.loc[:, 'A'] > 15]
- μΆλ ₯
True / False λ₯Ό λ°ννμ¬ loc μ
λ ₯κ°μ λ£μ΄μ£Όλ©΄ ν΄λΉνλ κ°μ μΆλ ₯νκ² λλ€.# μΈλ±μ±μ μν ν¨μ μμ±
def sel_row(df):
return df.A < 15
sel_row(df)
- μΆλ ₯
a True
b True
c False
Name: A, dtype: bool
df.loc[sel_row(df)]
- μΆλ ₯
dataFrame.loc[:, 'νμΈλ±μ€κ°']# 'A' μ΄ μ ν
df['A']
df.loc[:, 'A']
- μΆλ ₯
a 10
b 14
c 18
Name: A, dtype: int64
μ¬λ¬ μ΄ μΆλ ₯
df.loc[:, ['B', 'C']]
- μΆλ ₯
# 'A' μ΄ μΆλ ₯
df.loc[:][['A']] # λ°μ΄ν°νλ μ
df.loc[:]['A'] # μ리μ¦
df.loc[:, 'A'] # μ리μ¦
- μΆλ ₯
a 10
b 14
c 18
Name: A, dtype: int64
a 10
b 14
c 18
Name: A, dtype: int64
df.loc[νμΈλ±μ€, μ΄μΈλ±μ€]# 'a' νμ 'A' μ΄μ κ°
# κΈ°λ³Έ μΈλ±μ± μ¬μ©
df['A']['a': 'a']
# loc μΈλ±μ μ¬μ©
df.loc['a', 'A']
- μΆλ ₯
a 10
Name: A, dtype: int64
np.int64(10)
κ°λ³ μμ κ° μμ
ChainedAssignmentError: A value is being set on a copy of a DataFrame or Series through chained assignment.
Such chained assignment never works to update the original DataFrame or Series, because the intermediate object on which we are setting values always behaves as a copy (due to Copy-on-Write).
Try using '.loc[row_indexer, col_indexer] = value' instead, to perform the assignment in a single step.
loc μΈλ±μλ₯Ό μ¬μ©νμ¬ κ°μ μμ νλ€.# κΈ°λ³Έ μΈλ±μ± μ¬μ©
df['A']['a': 'a'] = 100 # λ°μ΄ν°νλ μ νμμ΄λ―λ‘ κ° μμ λΆκ°
# loc μΈλ±μ μ¬μ©
df.loc['a', 'A'] = 100
df
- μΆλ ₯
# aν Bμ΄ / cν Cμ΄ μ ν
df.loc[['a', 'c']][['B', 'C']]
df.loc[['a', 'c'], ['B', 'C']]
- μΆλ ₯
μμ λ°μ΄ν°νλ μ1
df3 = pd.DataFrame(data=np.arange(10, 22).reshape(3, 4),
index=['a b c'.split()],
columns=['A', 'B', 'C', 'D'])
df3
- μΆλ ₯
# aνλΆν° cνκΉμ§
df3.loc['a': 'c']
- μΆλ ₯
μμ λ°μ΄ν°νλ μ2
df4 = pd.DataFrame(data=np.arange(10, 22).reshape(4, 3),
index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
columns=['A', 'B', 'C'])
df4
- μΆλ ₯
# ('a', 1)ν, ('b', 1)ν μ ν
df4.loc[[('a', 1), ('b', 1)]]
- μΆλ ₯
