Python 数据帧高级切片
我是一名R用户,我发现自己在使用Python方面有点困难,尤其是在Pandas的索引功能方面 家庭id是我的第二栏。我根据此列对数据帧进行了排序,并运行了以下指令,返回了各种结果(我希望是相同的)。这些表达相同吗?如果是,为什么我会看到不同的结果Python 数据帧高级切片,python,indexing,pandas,slice,Python,Indexing,Pandas,Slice,我是一名R用户,我发现自己在使用Python方面有点困难,尤其是在Pandas的索引功能方面 家庭id是我的第二栏。我根据此列对数据帧进行了排序,并运行了以下指令,返回了各种结果(我希望是相同的)。这些表达相同吗?如果是,为什么我会看到不同的结果 In [63]: ground_truth.columns Out[63]: Index([Timestamp, household_id, ... (continues) In [59]: ground_truth.ix[1107177,'hous
In [63]: ground_truth.columns
Out[63]: Index([Timestamp, household_id, ... (continues)
In [59]: ground_truth.ix[1107177,'household_id']
Out[59]: 2
In [60]: ground_truth.ix[1107177,1]
Out[60]: 2.0
In [61]: ground_truth.iloc[1107177,1]
Out[61]: 4.0
In [62]: ground_truth['household_id'][1107177]
Out[62]: 2
注:很遗憾,我无法发布数据(太大)。注意:当您按列排序时,您将重新排列索引,并且假设它不是以这种方式排序的,那么您将在数组中具有不等于其线性索引的整数标签 首先,
ix
将首先尝试将整数作为标签,然后作为索引,因此59和62立即相同。其次,如果索引不是0:n-1
,那么1107177是一个标签,而不是一个整数索引,因此是60和61之间的差值。就浮动铸造而言,看起来您可能正在使用旧版本的熊猫。这在git master中不会发生
文档是否在ix
上
下面是一个玩具数据帧的示例:
In [1]:
df = DataFrame(randn(10, 3), columns=list('abc'))
print df
print
print df.sort('a')
a b c
0 -1.80 -0.28 -1.10
1 -0.58 1.00 -0.48
2 -2.50 1.59 -1.42
3 -1.00 -0.12 -0.93
4 -0.65 1.41 1.20
5 0.51 0.96 1.28
6 -0.28 0.13 1.59
7 1.28 -0.84 0.51
8 0.77 -1.26 -0.50
9 -0.59 -1.34 -1.06
a b c
2 -2.50 1.59 -1.42
0 -1.80 -0.28 -1.10
3 -1.00 -0.12 -0.93
4 -0.65 1.41 1.20
9 -0.59 -1.34 -1.06
1 -0.58 1.00 -0.48
6 -0.28 0.13 1.59
5 0.51 0.96 1.28
8 0.77 -1.26 -0.50
7 1.28 -0.84 0.51
请注意,已排序的行索引是整数,它们不会映射到它们的位置。注意:按列排序时,您将重新排列索引,并且假设它不是以这种方式排序的,那么数组中的整数标签将不等于它们的线性索引
首先,ix
将首先尝试将整数作为标签,然后作为索引,因此59和62立即相同。其次,如果索引不是0:n-1
,那么1107177是一个标签,而不是一个整数索引,因此是60和61之间的差值。就浮动铸造而言,看起来您可能正在使用旧版本的熊猫。这在git master中不会发生
文档是否在ix
上
下面是一个玩具数据帧的示例:
In [1]:
df = DataFrame(randn(10, 3), columns=list('abc'))
print df
print
print df.sort('a')
a b c
0 -1.80 -0.28 -1.10
1 -0.58 1.00 -0.48
2 -2.50 1.59 -1.42
3 -1.00 -0.12 -0.93
4 -0.65 1.41 1.20
5 0.51 0.96 1.28
6 -0.28 0.13 1.59
7 1.28 -0.84 0.51
8 0.77 -1.26 -0.50
9 -0.59 -1.34 -1.06
a b c
2 -2.50 1.59 -1.42
0 -1.80 -0.28 -1.10
3 -1.00 -0.12 -0.93
4 -0.65 1.41 1.20
9 -0.59 -1.34 -1.06
1 -0.58 1.00 -0.48
6 -0.28 0.13 1.59
5 0.51 0.96 1.28
8 0.77 -1.26 -0.50
7 1.28 -0.84 0.51
请注意,排序后的行索引是整数,它们不会映射到它们的位置。我可以理解那里的所有内容,除了浮点数而不是整数。您使用的是哪个版本的pandas
?我知道曾经有一个错误涉及到向上投射(见),但这是修复很久以前。也许还有一个?我用的是熊猫0.11.0。我希望有整数,就像我做的那样:int_vect=np.vectorize(int);我能理解那里的一切,除了浮点数而不是整数。您使用的是哪个版本的pandas
?我知道曾经有一个错误涉及到向上投射(见),但这是修复很久以前。也许还有一个?我用的是熊猫0.11.0。我希望有整数,就像我做的那样:int_vect=np.vectorize(int);基本事实['househouse\u id']=intvect(基本事实['househouse\u id'])