用行号填充新的Pandas列

lmvvr0a8  于 2022-12-28  发布在  其他
关注(0)|答案(5)|浏览(127)

我有以下带有随机索引值的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
quhf5bfb

quhf5bfb1#

DataFrame的长度使用numpy.arange

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

也可以使用DataFrame.shape,谢谢@Mehmet Burak Sayıcı:
x一个一个一个一个x一个一个二个x

3z6pesqy

3z6pesqy2#

通过使用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
b5buobof

b5buobof3#

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

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
qni6mghb

qni6mghb4#

你不需要numpy来实现与上一个答案相同的结果:

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

lf3rwulv5#

无 numpy 空头期权

df['C'] = range(len(df))

如果要对行号进行分组

df['C'] = df.groupby('A').cumcount()

相关问题