pandas之DataFrame取行列(df.loc(),df.iloc())以及索引

import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(24).reshape(6,4),index=list("ABCDEF"),columns=list("WXYZ"))
# df 輸出的結果爲:
    W   X   Y   Z
A   0   1   2   3
B   4   5   6   7
C   8   9  10  11
D  12  13  14  15
E  16  17  18  19
F  20  21  22  23

1、pandas排序,並取前N列數據

# df_sorted = df.sort_values(by="列名")
df_sorted = df.sort_values(by="Z")[:3] 按Z列排序,並取前三行
# 輸出結果爲:
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11

2、取行、取列DataFrame.loc,DataFrame.iloc
- 取行DataFrame.loc,DataFrame.iloc

df.loc["D"]              #  loc取單行
# 輸出結果爲:
W    12
X    13
Y    14
Z    15
Name: D, dtype: int32
df.loc["A":"D"]              # loc取連續多行
# 輸出結果爲:
    W   X   Y   Z
A   0   1   2   3
B   4   5   6   7
C   8   9  10  11
D  12  13  14  15
df.loc[["A","D"]]          # loc取不連續多行
# 輸出結果爲:
    W   X   Y   Z
A   0   1   2   3
D  12  13  14  15
df.iloc[0]                          #  iloc取單行
# 輸出結果爲:
W    0
X    1
Y    2
Z    3       
Name: A, dtype: int32
df.iloc[1:3]                       # iloc取連續多行
 # 輸出結果爲:  
   W  X   Y   Z
B  4  5   6   7
C  8  9  10  11  
df.iloc[[0,2,3]]                    # iloc取不連續多行
 # 輸出結果爲:  
    W   X   Y   Z
A   0   1   2   3
C   8   9  10  11
D  12  13  14  15

  • 取列

df.loc[:,"Y"]
 # 輸出結果爲:         #  loc取單列
A     2
B     6
C    10
D    14
E    18
F    22
Name: Y, dtype: int32
df.loc[:,"X":"Z"]
 # 輸出結果爲:                 #  loc取連續多列
    X   Y   Z
A   1   2   3
B   5   6   7
C   9  10  11
D  13  14  15
E  17  18  19
F  21  22  23
df.loc[:,["X","Z"]]                         #  loc取不連續多列
 # 輸出結果爲:
    X   Z
A   1   3
B   5   7
C   9  11
D  13  15
E  17  19
F  21  23
df.iloc[:,2]                           #  iloc取單列
 # 輸出結果爲:
A     2
B     6
C    10
D    14
E    18
F    22
Name: Y, dtype: int32
df.iloc[:,1:3]                           #  iloc取連續多列
 # 輸出結果爲:
    X   Y
A   1   2
B   5   6
C   9  10
D  13  14
E  17  18
F  21  22
df.iloc[:,[0,2]]                          #  iloc取不連續多列
 # 輸出結果爲:
    W   Y
A   0   2
B   4   6
C   8  10
D  12  14
E  16  18
F  20  22

  • 取行和列

df.loc["C","Y"]                   # loc取單行單列,即爲某一個座標的值
 # 輸出結果爲:
10
df.loc["A":"C","X":"Z"]           # loc取連續多行多列
 # 輸出結果爲:
   X   Y   Z
A  1   2   3
B  5   6   7
C  9  10  11
df.loc[["A","C","E"],["W","Y"]]                # loc取不連續多行多列
 # 輸出結果爲:
    W   Y
A   0   2
C   8  10
E  16  18
df.iloc[2,2]                    # iloc取單行單列,即爲某一個座標的值
 # 輸出結果爲:
 10
df.iloc[0:3,1:4]                # iloc取連續多行多列
 # 輸出結果爲:
   X   Y   Z
A  1   2   3
B  5   6   7
C  9  10  11
df.iloc[[0,2,4],[0,2]]              # iloc取不連續多行多列
 # 輸出結果爲:
    W   Y
A   0   2
C   8  10
E  16  18

  1. 賦值更改數據

df.iloc[[0,2,4],[0,2]] = np.nan
 # df輸出結果爲:
      W   X     Y   Z
A   NaN   1   NaN   3
B   4.0   5   6.0   7
C   NaN   9   NaN  11
D  12.0  13  14.0  15
E   NaN  17   NaN  19
F  20.0  21  22.0  23

  1. 布爾索引bool 注意嚴格按照格式來做

df[(df["Z"]>10)&(df["Z"]<20)]
 # 輸出結果爲:
      W   X     Y   Z
C   NaN   9   NaN  11
D  12.0  13  14.0  15
E   NaN  17   NaN  19

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章