用行号填充新的“熊猫”列

我有以下带有随机索引值的 DataFrame data:

      A   B
100   0   7
203   5   4
5992  0  10
2003  9   8
20   10   5
12    6   2

我想添加一个新的列“ C”,其中包含行号,例如:

      A   B   C
100   0   7   0
203   5   4   1
5992  0  10   2
2003  9   8   3
20   10   5   4
12    6   2   5
139745 次浏览

DataFrame的长度使用 numpy.arange:

df['C'] = np.arange(len(df))

或者你可以使用 DataFrame.shape,谢谢@Mehmet Burak 说 c:

df['C'] = np.arange(df.shape[0])

print (df)
A   B  C
100    0   7  0
203    5   4  1
5992   0  10  2
2003   9   8  3
20    10   5  4
12     6   2  5

通过使用 reset_index

df['C'] = df.reset_index().index
df


A   B  C
100    0   7  0
203    5   4  1
5992   0  10  2
2003   9   8  3
20    10   5  4
12     6   2  5

一般来说:

df['C'] = df.index if df.index.is_monotonic_increasing else range(len(df))
df


A   B  C
100    0   7  0
203    5   4  1
5992   0  10  2
2003   9   8  3
20    10   5  4
12     6   2  5

我们可以添加行号为第一列的新列,如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame({'B': [1, 2, 3], 'C': [4, 5, 6]})


B   C
0   1   4
1   2   5
2   3   6


df.insert(loc=0, column='A', value=np.arange(len(df)))
A   B   C
0   0   1   4
1   1   2   5
2   2   3   6

你不需要 numpy 就可以得到与前一个答案相同的结果:

df.insert(loc=0, column="A", value=df.reset_index().index)