我遇到以下情况:
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']
。这有多破?
答案 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: []