python:pandas之DataFrame取行列(df.lo
2019-08-19 本文已影响3人
书生_Scholar
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
- 赋值更改数据
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
- 布尔索引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