我是靠谱客的博主 愤怒老鼠,最近开发中收集的这篇文章主要介绍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

 

最后

以上就是愤怒老鼠为你收集整理的pandas之DataFrame取行列(df.loc(),df.iloc())以及索引的全部内容,希望文章能够帮你解决pandas之DataFrame取行列(df.loc(),df.iloc())以及索引所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部