我有这个简化的数据框:
ID Fruit
F1 Apple
F2 Orange
F3 Banana
我想在数据框的开头添加一个新列df['New_ID']
,其列号880
在每行中递增1。
输出应该简单如下:
New_ID ID Fruit
880 F1 Apple
881 F2 Orange
882 F3 Banana
我尝试了以下内容:
df['New_ID'] = ["880"] # but I want to do this without assigning it the list of numbers literally
知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:73)
答案 1 :(得分:25)
下面:
df = df.reset_index()
df.columns[0] = 'New_ID'
df['New_ID'] = df.index + 880
答案 2 :(得分: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
答案 3 :(得分:4)
您还可以简单地将pandas列设置为ID值列表,其长度与数据帧的长度相同。
df['New_ID'] = range(880, 880+len(df))
参考文档:https://pandas.pydata.org/pandas-docs/stable/missing_data.html
答案 4 :(得分:1)
import numpy as np
df['New_ID']=np.arange(880,880+len(df.Fruit))
df=df.reindex(columns=['New_ID','ID','Fruit'])
答案 5 :(得分:1)
对于索引从0开始并以1递增(即默认值)的pandas DataFrame,您可以执行以下操作:
df.insert(0, 'New_ID', df.index + 880)
如果您希望New_ID
是第一列。否则,如果您不介意最后的话:
df['New_ID'] = df.index + 880
答案 6 :(得分:1)
我使用了以下代码:
df.insert(0, 'id', range(1, 1 + len(df)))
所以我的“id”列是:
1, 2, 3, ...