使用 .loc 和 shift() 将序列号加一

Using .loc and shift() to add one to a serialnumber

我正在尝试使用轴 = 0 的 concat 添加两个数据帧,因此列保持不变但索引增加。其中一个数据框包含一个带有序列号的特定列(从一个向上 - 但不一定按顺序排列,例如 1,2,3,4,5 等)

import pandas as pd
import numpy as np

a = pd.DataFrame(data = {'Name': ['A', 'B','C'],
        'Serial Number': [1, 2,5]} )
b = pd.DataFrame(data = {'Name': ['D','E','F'],
        'Serial Number': [np.nan,np.nan,np.nan]})

c = pd.concat([a,b],axis=0).reset_index()

我希望数据帧 C 中的列 'Serial Number' 从 5+1 开始到下一个 6+1。

我尝试了很多方法,例如:

c.loc[c['B'].isna(), 'B'] = c['B'].shift(1)+1

但是好像不行

期望的输出:

  | Name | Serial Number|
-------------------------
1   A    |      1
2   B    |      2
3   C    |      5
4   D    |      6
5   E    |      7
6   F    |      8

一个想法是根据缺失值的数量添加最大值并 1:

a = np.arange(c['Serial Number'].isna().sum()) + c['Serial Number'].max() + 1
c.loc[c['Serial Number'].isna(), 'Serial Number'] = a

print (c)
   index Name  Serial Number
0      0    A            1.0
1      1    B            2.0
2      2    C            5.0
3      0    D            6.0
4      1    E            7.0
5      2    F            8.0