- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Pandas Shift函数的基础入门学习笔记由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Pandas Shift函数基础 。
在使用Pandas的过程中,有时会遇到shift函数,今天就一起来彻底学习下。先来看看帮助文档是怎么说的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
>>>
import
pandas
>>>
help
(pandas.DataFrame.shift)
Help
on function shift
in
module pandas.core.frame:
shift(
self
, periods
=
1
, freq
=
None
, axis
=
0
)
Shift index by desired number of periods with an optional time freq
Parameters
-
-
-
-
-
-
-
-
-
-
periods :
int
Number of periods to move, can be positive
or
negative
freq : DateOffset, timedelta,
or
time rule string, optional
Increment to use
from
the tseries module
or
time rule (e.g.
'EOM'
).
See Notes.
axis : {
0
or
'index'
,
1
or
'columns'
}
Notes
-
-
-
-
-
If freq
is
specified then the index values are shifted but the data
is
not
realigned. That
is
, use freq
if
you would like to extend the
index when shifting
and
preserve the original data.
Returns
-
-
-
-
-
-
-
shifted : DataFrame
|
该函数主要的功能就是使数据框中的数据移动,若freq=None时,根据axis的设置,行索引数据保持不变,列索引数据可以在行上上下移动或在列上左右移动;若行索引为时间序列,则可以设置freq参数,根据periods和freq参数值组合,使行索引每次发生periods*freq偏移量滚动,列索引数据不会移动.
参数详解:
先来看一下一些简单的示例:
1、非时间索引下period的设置 。
假设存在一个DataFrame数据df:
1
2
3
4
5
|
index value1
A
0
B
1
C
2
D
3
|
如果执行以下代码 df.shift() 就会变成如下:
1
2
3
4
5
|
index value1
A NaN
B
0
C
1
D
2
|
执行 df.shift(2) 就会得到:
1
2
3
4
5
|
index value1
A NaN
B NaN
C
0
D
1
|
执行 df.shift(-1) 会得到:
1
2
3
4
5
|
index value1
A
1
B
2
C
3
D NaN
|
注意,shift移动的是整个数据,如果df有如下多列数据:
1
2
3
4
5
|
AA BB CC DD
a
0
1
2
3
b
4
5
6
7
c
8
9
10
11
d
12
13
14
15
|
执行 df.shift(2) 的数据为:
1
2
3
4
5
|
AA BB CC DD
a NaN NaN NaN NaN
b NaN NaN NaN NaN
c
0.0
1.0
2.0
3.0
d
4.0
5.0
6.0
7.0
|
如果只想移动df中的某一列数据,则需要这样操作: df['DD']= df['DD'].shift(1) 。
执行后的数据为:
1
2
3
4
5
|
AA BB CC DD
a
0
1
2
NaN
b
4
5
6
NaN
c
8
9
10
11
d
12
13
14
15
|
2、时间索引下freq 参数设置 。
假设存在如下DataFrame的df:
1
|
df
=
pd.DataFrame(np.arange(
16
).reshape(
4
,
4
),columns
=
[
'AA'
,
'BB'
,
'CC'
,
'DD'
],index
=
pd.date_range(
'2012-06-01'
,
'2012-06-04'
))
|
1
2
3
4
5
|
AA BB CC DD
2012
-
06
-
01
0
1
2
3
2012
-
06
-
02
4
5
6
7
2012
-
06
-
03
8
9
10
11
2012
-
06
-
04
12
13
14
15
|
执行 df.shift(freq=datetime.timedelta(1)) 后:
1
2
3
4
5
|
AA BB CC DD
2012
-
06
-
02
0
1
2
3
2012
-
06
-
03
4
5
6
7
2012
-
06
-
04
8
9
10
11
2012
-
06
-
05
12
13
14
15
|
执行 df.shift(freq=datetime.timedelta(-2)) 后:
1
2
3
4
5
|
AA BB CC DD
2012
-
05
-
30
0
1
2
3
2012
-
05
-
31
4
5
6
7
2012
-
06
-
01
8
9
10
11
2012
-
06
-
02
12
13
14
15
|
可以看到索引直接变了.
3、axis轴向设置 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
df
=
pd.DataFrame(np.arange(
16
).reshape(
4
,
4
),columns
=
[
'AA'
,
'BB'
,
'CC'
,
'DD'
],index
=
[
'a'
,
'b'
,
'c'
,
'd'
])
df
Out[
1
]:
AA BB CC DD
a
0
1
2
3
b
4
5
6
7
c
8
9
10
11
d
12
13
14
15
#当period为正时,默认是axis = 0轴的设定,向下移动
df.shift(
2
)
Out[
2
]:
AA BB CC DD
a NaN NaN NaN NaN
b NaN NaN NaN NaN
c
0.0
1.0
2.0
3.0
d
4.0
5.0
6.0
7.0
#当axis=1,沿水平方向进行移动,正数向右移,负数向左移
df.shift(
2
,axis
=
1
)
Out[
3
]:
AA BB CC DD
a NaN NaN
0.0
1.0
b NaN NaN
4.0
5.0
c NaN NaN
8.0
9.0
d NaN NaN
12.0
13.0
#当period为负时,默认是axis = 0轴的设定,向上移动
df.shift(
-
1
)
Out[
4
]:
AA BB CC DD
a
4.0
5.0
6.0
7.0
b
8.0
9.0
10.0
11.0
c
12.0
13.0
14.0
15.0
d NaN NaN NaN NaN
|
pandas 中上下两行相减(隔行相减) -- shift函数的使用 。
最近使用pandas处理数据,需求是想相邻两行上下相减,查API发现shift函数,很灵活,。你也可以隔任意行相减.
1
|
p[
'xx_1'
]
=
p[
"xx"
].shift(
1
)
|
上面得到的就是xx字段向下移动一行的结果,和之前相比向下移动一行,你可以设置为任意行,也可是向上向下 。
1
|
p[
'xx'
]
-
p[
"xx_1"
]
|
这就是前后两行的差值,很方便,Pandas很强大 。
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我的支持.
原文链接:https://www.biaodianfu.com/pandas-shift.html 。
最后此篇关于Pandas Shift函数的基础入门学习笔记的文章就讲到这里了,如果你想了解更多关于Pandas Shift函数的基础入门学习笔记的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!