- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章pandas ix loc的区别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
一开始自学Python的numpy、pandas时候,索引和切片把我都给弄晕了,特别是numpy的切片索引、布尔索引和花式索引,简直就是大乱斗。但是最近由于版本的问题,从之前的Python2.7改用Python3.6 了,在3.6中提供了loc和iloc两种索引方法,把ix这个方法给划分开来了,所以很有必要做个总结和对比.
同理,索引列数据也是如此! 。
举例说明:
1、分别使用loc、iloc、ix 索引第一行的数据
(1)loc 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import
pandas as pd
data
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]]
index
=
[
'a'
,
'b'
]
#行号
columns
=
[
'c'
,
'd'
,
'e'
]
#列号
df
=
pd.DataFrame(data,index
=
index,columns
=
columns)
#生成一个数据框
#print df.loc['a']
'''
c 1
d 2
e 3
'''
print
df.loc[
0
]
#这个就会出现错误
'''
TypeError: cannot do label indexing on <class 'pandas.indexes.base.Index'>
with these indexers [1] of <type 'int'>
'''
|
(2)iloc 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import
pandas as pd
data
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]]
index
=
[
'a'
,
'b'
]
#行号
columns
=
[
'c'
,
'd'
,
'e'
]
#列号
df
=
pd.DataFrame(data,index
=
index,columns
=
columns)
#生成一个数据框
print
df.iloc[
0
]
'''
c 1
d 2
e 3
'''
print
df.iloc[
'a'
]
'''
TypeError: cannot do positional indexing on <class 'pandas.indexes.base.Index'>
with these indexers [a] of <type 'str'>
'''
|
(3)ix 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import
pandas as pd
data
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]]
index
=
[
'a'
,
'b'
]
#行号
columns
=
[
'c'
,
'd'
,
'e'
]
#列号
df
=
pd.DataFrame(data,index
=
index,columns
=
columns)
#生成一个数据框
print
df.ix[
0
]
'''
c 1
d 2
e 3
'''
print
df.ix[
'a'
]
'''
c 1
d 2
e 3
'''
|
2、分别使用loc、iloc、ix 索引第一列的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import
pandas as pd
data
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]]
index
=
[
'a'
,
'b'
]
#行号
columns
=
[
'c'
,
'd'
,
'e'
]
#列号
df
=
pd.DataFrame(data,index
=
index,columns
=
columns)
#生成一个数据框
print
df.loc[:,[
'c'
]]
print
df.iloc[:,[
0
]]
print
df.ix[:,[
'c'
]]
print
df.ix[:,[
0
]]
#结果都为
'''
c
a 1
b 4
'''
|
3、分别使用loc、iloc、ix 索引多行的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import
pandas as pd
data
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]]
index
=
[
'a'
,
'b'
]
#行号
columns
=
[
'c'
,
'd'
,
'e'
]
#列号
df
=
pd.DataFrame(data,index
=
index,columns
=
columns)
#生成一个数据框
print
df.loc[
'a'
:
'b'
]
print
df.iloc[
0
:
1
]
print
df.ix[
'a'
:
'b'
]
print
df.ix[
0
:
1
]
#结果都为
'''
c d e
a 1 2 3
b 4 5 6
'''
|
4、分别使用loc、iloc、ix 索引多列的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import
pandas as pd
data
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]]
index
=
[
'a'
,
'b'
]
#行号
columns
=
[
'c'
,
'd'
,
'e'
]
#列号
df
=
pd.DataFrame(data,index
=
index,columns
=
columns)
#生成一个数据框
print
df.loc[:,
'c'
:
'd'
]
print
df.iloc[:,
0
:
2
]
print
df.ix[:,
'c'
:
'd'
]
print
df.ix[:,
0
:
2
]
#结果都为
'''
c d
a 1 2
b 4 5
'''
|
5、loc、iloc、ix使用切片的区别 。
loc、iloc、ix对于切片的索引数据就两种情况,按照标签切片索引和按照位置编号切片索引 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
In [
20
]: df.loc[
'ind0'
:
'ind3'
]
Out[
20
]:
col0 col1 col2 col3 col4
ind0
0
1
2
3
4
ind1
5
6
7
8
9
ind2
10
11
12
13
14
ind3
15
16
17
18
19
In [
21
]: df.iloc[
0
:
3
]
Out[
21
]:
col0 col1 col2 col3 col4
ind0
0
1
2
3
4
ind1
5
6
7
8
9
ind2
10
11
12
13
14
|
区别不在于用哪种方法,而是通过标签索引将会将切片末端包含进去,通过位置编号索引不会讲切片末端包含进去。同样的都是第一行到第四行,通过loc就会把1,2,3,4行都提取出来,通过iloc就只能把1,2,3行提取出来。ix方法也是一样,知识方法不同而已.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
In [
23
]: df.ix[
'ind0'
:
'ind3'
]
Out[
23
]:
col0 col1 col2 col3 col4
ind0
0
1
2
3
4
ind1
5
6
7
8
9
ind2
10
11
12
13
14
ind3
15
16
17
18
19
In [
24
]: df.ix[
0
:
3
]
Out[
24
]:
col0 col1 col2 col3 col4
ind0
0
1
2
3
4
ind1
5
6
7
8
9
ind2
10
11
12
13
14
|
对于列的切片跟行的一样.
这里讨论了基本的索引和切片,如果有用词不当的地方请提出来,我将积极改正,或者有其他有关花式索引、布尔索引的问题也可以大家一起讨论讨论! 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://blog.csdn.net/sinat_25873421/article/details/80634846 。
最后此篇关于pandas ix loc的区别的文章就讲到这里了,如果你想了解更多关于pandas ix loc的区别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有多个关于堆栈溢出的问题比较 loc、iloc 和 ix,例如 this one ,以及多个谈论速度差异的问题,例如 this one 。似乎一致认为 .ix 更快,但它是 deprecated .
显然不可能转换 WhereEnumerableIterator至 IEnumerable public interface IX public class X1 : IX public class X
为什么下面会导致编译错误? interface IX {} interface IY {} class XY : IX, IY {} void Foo() where T : IX, IY {
例如, import pandas as pd import numpy as np df1 = pd.DataFrame({'frames':np.arange(3), 'r':np.repeat(
在 C# 中,如果 A 实现 IX 并且 B 继承自 A ,是否必然遵循 B 实现 IX?如果是,是因为 LSP 吗?之间有什么区别吗: 1. Interface IX; Class A : IX;
考虑 Pandas 数据框 df = DataFrame({'somedata': [13,24,54]}, index=[1,1,2]) somedata 1 13 1 24 2
在pandas iloc vs ix vs loc explanation, how are they different? ,它提到:ix 通常会尝试表现得像 loc 但如果标签不在索引中,则回落到
一开始自学Python的numpy、pandas时候,索引和切片把我都给弄晕了,特别是numpy的切片索引、布尔索引和花式索引,简直就是大乱斗。但是最近由于版本的问题,从之前的Python2.7改用
抱歉,标题措辞不好,但我什至不知道如何正确提问。 我该如何转动它? instPublicIP :: Instance -> Maybe Text instPublicIP inst = inst
我想运行一段代码来检查其中发生了什么,但我无法执行它,有一条消息说 .ix 已弃用。 离群值 = 4 #离群值 for k in np.arange(0,3,1): wAvg = sum(df
Python 版本:2.7.6 NumPy 版本:1.10.2 Pandas :0.17.1 我知道 .ix 现在已被弃用,但我在遗留系统上工作并看到 .ix 的这种行为,我很困惑 # Native
因此,我尝试使用此处“删除不符合所需条件的行”下的方法,仅在我的数据框中包含 B 列值小于 C 列值的行:https://www.quora.com/How-should-I-delete-rows-
我有一个 pandas 数据框形式的 csv 文件,具有以下索引 Time stamp SOG Altitude 2015-03-11T08:49:53.00
我想知道是否有一种方法可以使 .ix 具有多个条件。更具体地说,我想做的是改变这一点: In [66]: df_test Out[66]: A B C
有人可以向我解释这种行为吗? import pandas as pd dates = pd.date_range('1/1/2000', periods=8) df = pd.DataFrame(np
鉴于 pandas 0.20.0 和 deprecation of .ix 的更新,我想知道使用剩余的 .loc 和 .iloc 获得相同结果的最有效方法是什么。我刚刚回答了this question
我在开发一些加载一组用户指定的共享对象的软件。我想向我们的“加载器”组件添加一些代码,该组件可以查询每个指定的共享对象并找出用于构建/链接该共享对象的编译器和编译器版本。 在过去,我已经能够使用“st
我只知道一个有效,另一个无效。 上下文: 我有一个数据结构F其中包含 Data.Map.Map k S到另一个数据结构 S .我的目标是建立一个 Lens给出 F和 k将描述 S 中的一个字段. 困难
假设我有一些相当简单的数据类型 Person有几个字段和一个包含 Person 集合的类型s。 data Person = Person { _name :: String, _age :: Int
我有两个 session 这样做。 Session 1>start transaction; Session 1>select * from account for update; Session 2
我是一名优秀的程序员,十分优秀!