如何使用Pandas将增量数字添加到新列

MEh*_*san 45 python dataframe pandas

我有这个简化的数据帧:

ID   Fruit
F1   Apple
F2   Orange
F3   Banana 
Run Code Online (Sandbox Code Playgroud)

我想在数据帧的开头添加一个新列df['New_ID'] ,其列数880在每行中递增1.

输出应该简单如下:

New_ID   ID   Fruit
880      F1   Apple
881      F2   Orange
882      F3   Banana  
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

df['New_ID'] = ["880"] # but I want to do this without assigning it the list of numbers literally
Run Code Online (Sandbox Code Playgroud)

不知道怎么解决这个问题?

谢谢!

piR*_*red 93

df.insert(0, 'New_ID', range(880, 880 + len(df)))
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 第一个参数 *loc* 是 *插入索引*,即 *0 <= loc <= len(columns)*。 (2认同)
  • 注意:这会就地修改数据框,即不要重新分配 df `df = df.insert(.....)` (2认同)

Kar*_*tik 31

这里:

df = df.reset_index()
df.columns[0] = 'New_ID'
df['New_ID'] = df.index + 880
Run Code Online (Sandbox Code Playgroud)

  • 或者做piRSquared说的话,他的回答更好.我应该想到这一点,但当你提出问题时我正在操纵指数,我想我坐在了沟里. (6认同)

Ale*_*der 9

df = df.assign(New_ID=[880 + i for i in xrange(len(df))])[['New_ID'] + df.columns.tolist()]

>>> df
   New_ID  ID   Fruit
0     880  F1   Apple
1     881  F2  Orange
2     882  F3  Banana
Run Code Online (Sandbox Code Playgroud)


小智 9

我使用了以下代码:

df.insert(0, 'id', range(1, 1 + len(df)))
Run Code Online (Sandbox Code Playgroud)

所以我的“id”列是:

1, 2, 3, ...


小智 5

您也可以简单地将pandas列设置为ID值列表,其长度与数据帧的长度相同。

df['New_ID'] = range(880, 880+len(df))
Run Code Online (Sandbox Code Playgroud)

参考文档:https : //pandas.pydata.org/pandas-docs/stable/missing_data.html