运行结果如图3-18所示 。
文章插图
▲图3-18
需要注意的是 , 如果只有一个时间点 , 那么返回的值是Series对象 , 代码如下:
df.loc['20160102',['A','C']]
输出结果如下:A -0.816178C -0.595195Name: 2016-01-02 00:00:00, dtype: float64
如果想要获取DataFrame对象 , 需要使用如下命令:df.loc['20160102':'20160102',['A','C']]
运行结果如图3-19所示 。文章插图
▲图3-19
上面介绍的是loc方法 , 是按标签(索引)来选取数据的 。有时候 , 我们会希望按照DataFrame的绝对位置来获取数据 , 比如 , 如果想要获取第3行第2列的数据 , 但不想按标签(索引)获取 , 那么这时候就可以使用iloc方法 。
根据位置选取数据 , 代码如下:
df.iloc[2]
输出结果如下:A 0.030206B 0.759953C -1.446549D -0.874364Name: 2016-01-03 00:00:00, dtype: float64
再来看一个示例:df.iloc[3:6,1:3]
运行结果如图3-20所示 。文章插图
▲图3-20
注意:对于DataFrame数据类型 , 可以使用[]运算符来进行选取 , 这也是最符合习惯的 。但是 , 对于工业代码 , 推荐使用loc、iloc等方法 。因为这些方法是经过优化的 , 拥有更好的性能 。有时 , 我们需要选取满足一定条件的数据 。这个时候可以使用条件表达式来选取数据 。这时传给df的既不是标签 , 也不是绝对位置 , 而是布尔数组(Boolean Array) 。下面来看一下示例 。
例如 , 寻找A列中值大于0的行 。首先 , 生成一个布尔数组 , 代码如下:
df.A>0
输出结果如下:2016-01-01 False2016-01-02 False2016-01-03 True2016-01-04 True2016-01-05 True2016-01-06 True2016-01-07 True2016-01-08 FalseFreq: D, Name: A, dtype: bool
可以看到 , 这里生成了一个Series类型的布尔数组 。可以通过这个数组来选取对应的行 , 代码如下:df[df.A>0]
运行结果如图3-21所示 。文章插图
▲图3-21
从结果可以看到 , A列中值大于0的所有行都被选择出来了 , 同时也包括了BCD列 。
现在我们要寻找df中所有大于0的数据 , 先生成一个全数组的布尔值 , 代码如下:
df>0
运行结果如图3-22所示 。文章插图
▲图3-22
下面来看一下使用df>0选取出来的数据效果 。由图3-23可以看到 , 大于0的数据都能显示 , 其他数据显示为NaN值 。
df[df>0]
运行结果如图3-23所示 。文章插图
▲图3-23
再来看一下如何改变df的值 。首先我们为df添加新的一列E , 代码如下:
df['E']=0df
运行结果如图3-24所示 。文章插图
▲图3-24
使用loc改变一列值 , 代码如下:
df.loc[:,'E']=1df
运行结果如图3-25所示 。文章插图
▲图3-25
使用loc改变单个值 , 代码如下:
df.loc['2016-01-01','E'] = 2df
运行结果如图3-26所示 。文章插图
▲图3-26
使用loc改变一列值 , 代码如下:
df.loc[:,'D'] = np.array([2] * len(df))df
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 世界上跳的最高的昆虫是什么 什么动物是世界上跳得最高的
- 世界上最长的水母 世界上最小的水母是什么水母
- 最早的灵长类动物 人是灵长类动物
- 世界上谁的尾巴最长动物 马的尾巴大约长多少厘米
- 海底最深的地方有什么怪物 隐藏海底的怪物
- 最毒的蚂蚁是哪种 世界上最毒的蚂蚁是什么蚂蚁
- 女人喝什么茶最养生,女人喝什么美容养颜
- 世界上寿命最长的海洋动物是 牛的最长寿命是多少岁
- 经科学家测试,流星体运动的最大速度 天文学家发现了一颗太阳系外行星
- 世界上已发现的矿物有近几种 地球上最古老的矿物是