Python 数据帧高级切片

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

我是一名R用户,我发现自己在使用Python方面有点困难,尤其是在Pandas的索引功能方面

家庭id是我的第二栏。我根据此列对数据帧进行了排序,并运行了以下指令,返回了各种结果(我希望是相同的)。这些表达相同吗?如果是,为什么我会看到不同的结果

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'])