Python 从DataFrame提取的列具有不同的索引
我遇到了以下情况:Python 从DataFrame提取的列具有不同的索引,python,pandas,Python,Pandas,我遇到了以下情况: some_df.index #=> Int64Index([0, 1], dtype='int64') some_df['some_column'].index #=> Float64Index([7.0, 5.0], dtype='object') 为什么会这样?这是否意味着某些_df的构造方式有问题?最后,确保我从some_df中提取的列都使用与some_df本身相同的索引的最佳方法是什么 编辑:我深入到代码中,显然有一行只
some_df.index #=> Int64Index([0, 1], dtype='int64')
some_df['some_column'].index #=> Float64Index([7.0, 5.0], dtype='object')
为什么会这样?这是否意味着某些_df
的构造方式有问题?最后,确保我从some_df
中提取的列都使用与some_df
本身相同的索引的最佳方法是什么
编辑:我深入到代码中,显然有一行只是重新分配了索引:
some_df['some_column].index=some_df['other_column']
。这有多严重?目前尚不清楚这是否是一个bug,尽管分配给序列索引可能会引起问题(获得这种行为可能相当棘手)。。。你绝对不应该这样做
要确认事实确实如此,请执行以下操作:
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: []
请发布原始数据、代码、熊猫、numpy和python版本,thanks@EdChum:我深入到代码中,显然有一行只是重新分配了索引:
some_df['some_column]=some_series
。这有多糟糕?对不起,我假设这是你的代码,而不是熊猫中的某个bug?@EdChum:是的,是第三方代码进行了重新分配,而不是熊猫代码。我只是想知道它有多正确,有多大可能会引起问题,等等。这取决于,我尝试将一个具有浮点索引的序列分配给一个具有int索引的df列,而该列的索引保持不变,您仍然需要发布原始输入数据以及最小的代码和库版本,否则,没有人能证实他们看到的和你看到的一样