从DataFrame中提取的列具有不同的索引

时间:2015-05-06 19:23:19

标签: python pandas

我遇到以下情况:

some_df.index                 #=> Int64Index([0, 1], dtype='int64')
some_df['some_column'].index  #=> Float64Index([7.0, 5.0], dtype='object')

为什么会这样?这是否意味着some_df的构建方式出现了问题?最后,确保从some_df中提取的列都使用与some_df本身相同的索引的最佳方法是什么?

编辑:我深入研究代码,显然有一条线只是重新分配索引:some_df['some_column].index = some_df['another_column']。这有多破?

1 个答案:

答案 0 :(得分:0)

目前还不清楚这是否是一个错误,虽然可能会指定系列索引应该加注(获得此行为可能相当棘手)......你绝对不应该这样做!

确认确实如此:

In [11]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])

In [12]: df
Out[12]:
   A  B
0  1  2
1  3  4

In [13]: df['A'].index
Out[13]: Int64Index([0, 1], dtype='int64')

In [14]: df['A'].index = [7., 8.]

In [15]: df['A'].index
Out[15]: Float64Index([7.0, 8.0], dtype='float64')

In [16]: df
Out[16]:
   A  B
0  1  2
1  3  4

所以虽然这显然是有效的,但你会得到一些令人惊讶的(可能是未定义的)行为......

例如:

In [21]: df.groupby("A").sum()
Out[21]:
Empty DataFrame
Columns: [B]
Index: []