可以在Python中插入缺少的序列号吗?

可以在Python中插入缺少的序列号吗?,python,pandas,sequence,Python,Pandas,Sequence,我现在正在使用Excel来完成这项任务,但我想知道你们中是否有人知道在python中查找和插入缺失序列号的方法 假设我有一个数据帧: import pandas as pd data = {'Sequence': [1, 2, 4, 6, 7, 9, 10], 'Value': ["x", "x", "x", "x", "x", "x", "x"] } df = pd.DataFrame (data, columns = ['Sequence','Value

我现在正在使用Excel来完成这项任务,但我想知道你们中是否有人知道在python中查找和插入缺失序列号的方法

假设我有一个数据帧:

import pandas as pd

data = {'Sequence':  [1, 2, 4, 6, 7, 9, 10],
        'Value': ["x", "x", "x", "x", "x", "x", "x"]
        }

df = pd.DataFrame (data, columns = ['Sequence','Value'])
现在我想在这里使用一些代码来查找“sequence”列中缺少的序号,并在“Values”列中为缺少序号的行保留空格。要获得以下输出:

    print(df)

   Sequence Value
0         1     x
1         2     x
2         3     
3         4     x  
4         5     
5         6     x
6         7     x
7         8
8         9     x
9         10    x
更好的解决方案是,您还可以定义序列的开始和结束。例如,当序列从3开始,但您希望它从1开始并在12结束时。但是,仅针对第一部分的解决方案已经很有帮助了。提前谢谢

您可以使用序列的最小值和最大值的范围:

(df.set_index('Sequence')
   .reindex(range(df.Sequence.iat[0],df.Sequence.iat[-1]+1), fill_value='')
   .reset_index())

   Sequence Value
0         1     x
1         2     x
2         3      
3         4     x
4         5      
5         6     x
6         7     x
7         8      
8         9     x
9        10     x
可以使用序列的“最小”和“最大”值中的一个范围执行以下操作:

(df.set_index('Sequence')
   .reindex(range(df.Sequence.iat[0],df.Sequence.iat[-1]+1), fill_value='')
   .reset_index())

   Sequence Value
0         1     x
1         2     x
2         3      
3         4     x
4         5      
5         6     x
6         7     x
7         8      
8         9     x
9        10     x
您可以尝试以下方法:

序列=[1,2,4,6,7,9,10] df=pd.DataFramenp.arange1,12,columns=[Sequence] df=df.loc[df.Sequence.isinSequence,'Value']='x' df=df.fillna 首先,使用您希望数据帧具有的序列值的给定范围创建数据帧。 然后,对于序列列表中“序列”所在的行,将“Value”设置为“x”。最后用填充缺少的值。

您可以尝试以下方法:

序列=[1,2,4,6,7,9,10] df=pd.DataFramenp.arange1,12,columns=[Sequence] df=df.loc[df.Sequence.isinSequence,'Value']='x' df=df.fillna 首先,使用您希望数据帧具有的序列值的给定范围创建数据帧。
然后,对于序列列表中“序列”所在的行,将“Value”设置为“x”。最后用.

填充缺少的值,或者通过合并数据帧来完成:

    seq = [1, 2, 4, 6, 7, 9, 10]
    dfs0 = pd.DataFrame.from_dict({'Sequence':  seq, 'Value': ['x']*len(seq)})
    dfseq = pd.DataFrame.from_dict({'Sequence': range( min(seq), max(seq)+1 )})
              .merge(dfs0, on='Sequence', how='outer').fillna('')
    print(dfseq)


   Sequence Value
0         1     x
1         2     x
2         3      
3         4     x
4         5      
5         6     x
6         7     x
7         8      
8         9     x
9        10     x

或者通过合并数据帧来实现:

    seq = [1, 2, 4, 6, 7, 9, 10]
    dfs0 = pd.DataFrame.from_dict({'Sequence':  seq, 'Value': ['x']*len(seq)})
    dfseq = pd.DataFrame.from_dict({'Sequence': range( min(seq), max(seq)+1 )})
              .merge(dfs0, on='Sequence', how='outer').fillna('')
    print(dfseq)


   Sequence Value
0         1     x
1         2     x
2         3      
3         4     x
4         5      
5         6     x
6         7     x
7         8      
8         9     x
9        10     x