可以在Python中插入缺少的序列号吗?
我现在正在使用Excel来完成这项任务,但我想知道你们中是否有人知道在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
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