这里非常奇怪的错误:我正在使用pandas来合并多个数据帧.作为合并的一部分,我必须多次调用reset_index.但是当我这样做时,它会在第二次或第三次使用reset_index时意外崩溃.
这是重现错误的最小代码:
import pandas
A = pandas.DataFrame({
'val' : ['aaaaa', 'acaca', 'ddddd', 'zzzzz'],
'extra' : range(10,14),
})
A = A.reset_index()
A = A.reset_index()
A = A.reset_index()
Run Code Online (Sandbox Code Playgroud)
这是追溯的相关部分:
....
A = A.reset_index()
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 2393, in reset_index
new_obj.insert(0, name, _maybe_cast(self.index.values))
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 1787, in insert
self._data.insert(loc, column, value)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/internals.py", line 893, in insert
raise Exception('cannot insert %s, already exists' % item)
Exception: cannot insert level_0, already exists
Run Code Online (Sandbox Code Playgroud)
知道这里出了什么问题吗?我该如何解决?
Abe*_*Abe 51
检查frame.py,看起来像pandas尝试插入列'index'或'level_0'.如果已经采用了它们中的任何一个/两个(??),则它会抛出错误.
幸运的是,有一个"下降"选项.AFAICT,它会删除具有相同名称的现有索引,并将其替换为新的重置索引.如果您有一个名为"index"的列,这可能会让您遇到麻烦,但我认为您没问题.
"固定"代码:
import pandas
A = pandas.DataFrame({
'val' : ['aaaaa', 'acaca', 'ddddd', 'zzzzz'],
'extra' : range(10,14),
})
A = A.reset_index(drop=True)
A = A.reset_index(drop=True)
A = A.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21577 次 |
| 最近记录: |