将pandas DataFrame的索引增加一

Tob*_*oby 4 python pandas

我想让我的数据帧从索引1而不是0开始.但不知怎的,我没有得到它:

In[1]: df = pd.DataFrame([[4,7],[10,11],[7,2]],columns=['one', 'two'])
In[2]: df
Out[2]: 
   one  two
0    4    7
1   10   11
2    7    2
In[3]: df.reindex(range(1,len(df)+1))
Out[3]: 
   one  two
1   10   11
2    7    2
3  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

我的第一排去了哪里?我对reindex()的错误是什么?

joc*_*tee 11

要将索引增加 1,您可以简单地修改索引,df.index += 1.

完整示例:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([[4,7],[10,11],[7,2]],columns=['one', 'two'])

In [3]: df
Out[3]:
   one  two
0    4    7
1   10   11
2    7    2

In [4]: df.index += 1

In [5]: df
Out[5]:
   one  two
1    4    7
2   10   11
3    7    2
Run Code Online (Sandbox Code Playgroud)

  • 注意:`df.index += 1` 产生一个 `IntXXIndex`,而 `df.index = df.index + 1` 产生 `RangeIndex`。 (6认同)
  • @problemofficer:我想说的是保留原始类型的。我正在使用 `pandas` 版本 `1.1.3` 进行检查,并且 `type(df.index)` 是 `<class 'pandas.core.indexes.range.RangeIndex'>`。所以,我会说 `df.index = df.index + 1` 更好。但有趣的是,我无法在版本“1.1.3”中重现我的评论。两种方式都以 `<class 'pandas.core.indexes.range.RangeIndex'>` 结尾。所以,现在我想说两者都一样好,而 `df.index += 1` 需要更少的打字!:) (2认同)

EdC*_*ica 10

重建索引不会重新分配索引值并保留您可以直接分配的顺序:

In [25]:

df.index = range(1,len(df)+1)
df
Out[25]:
   one  two
1    4    7
2   10   11
3    7    2
Run Code Online (Sandbox Code Playgroud)

文件表明你符合你的数据,这将引进新的索引NaN,其中没有因此存在,为什么你失去了一排,这就是为什么有一个值fillnaPARAM的reindex.