axis参数非常的让人困惑难以理解,本视频我会用形象化的方式讲解一下这个参数,核心要诀就是axis那个轴会消失!
- axis=0或者"index":
- 如果是单行操作,就指的是某一行
- 如果是聚合操作,指的是跨行cross rows
- axis=1或者"columns":
- 如果是单列操作,就指的是某一列
- 如果是聚合操作,指的是跨列cross columns
按哪个axis,就是这个axis要动起来(类似被for遍历),其它的axis保持不动
import pandas as pd
import numpy as np
df = pd.DataFrame(
np.arange(12).reshape(3,4),
columns=['A', 'B', 'C', 'D']
)
df
A | B | C | D | |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 | 7 |
2 | 8 | 9 | 10 | 11 |
1、单列drop,就是删除某一列
# 代表的就是删除某列
df.drop("A", axis=1)
B | C | D | |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 5 | 6 | 7 |
2 | 9 | 10 | 11 |
2、单行drop,就是删除某一行
df
A | B | C | D | |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 | 7 |
2 | 8 | 9 | 10 | 11 |
# 代表的就是删除某行
df.drop(1, axis=0)
A | B | C | D | |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
2 | 8 | 9 | 10 | 11 |
3、按axis=0/index执行mean聚合操作
反直觉:输出的不是每行的结果,而是每列的结果
df
A | B | C | D | |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 | 7 |
2 | 8 | 9 | 10 | 11 |
# axis=0 or axis=index
df.mean(axis=0)
A 4.0
B 5.0
C 6.0
D 7.0
dtype: float64
指定了按哪个axis,就是这个axis要动起来(类似被for遍历),其它的axis保持不动
4、按axis=1/columns执行mean聚合操作
反直觉:输出的不是每行的结果,而是每列的结果
df
A | B | C | D | |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 | 7 |
2 | 8 | 9 | 10 | 11 |
# axis=1 or axis=columns
df.mean(axis=1)
0 1.5
1 5.5
2 9.5
dtype: float64
指定了按哪个axis,就是这个axis要动起来(类似被for遍历),其它的axis保持不动
5、再次举例,加深理解
def get_sum_value(x):
return x["A"] + x["B"] + x["C"] + x["D"]
df["sum_value"] = df.apply(get_sum_value, axis=1)
df
A | B | C | D | sum_value | |
---|---|---|---|---|---|
0 | 0 | 1 | 2 | 3 | 6 |
1 | 4 | 5 | 6 | 7 | 22 |
2 | 8 | 9 | 10 | 11 | 38 |
指定了按哪个axis,就是这个axis要动起来(类似被for遍历),其它的axis保持不动
本文地址:http://www.crazyant.net/2546.html
转载请注明来源