Python 移动数据中的非周期值

Python 移动数据中的非周期值,python,pandas,Python,Pandas,我有这样一本数据字典: 数据={ “新值”:[ '100', '100', '250', '250', '250', '50', '90', '90', '90', '90' ], “上一个值”:[ “无”、“无”, “无”、“无”, “无”、“无”, “无”、“无”, “没有”,“没有” ] } 新值上一个值 0 100无 1100无 2250无 3250无 4250无 550无 690无 790无 890无 9 90无 我希望得到另一个字典exp\u结果,如下所示: exp\u结果={ “

我有这样一本
数据
字典:

数据={
“新值”:[
'100', '100',
'250', '250',
'250', '50',
'90', '90',
'90', '90'
],
“上一个值”:[
“无”、“无”,
“无”、“无”,
“无”、“无”,
“无”、“无”,
“没有”,“没有”
]
}
新值上一个值
0 100无
1100无
2250无
3250无
4250无
550无
690无
790无
890无
9 90无
我希望得到另一个字典
exp\u结果
,如下所示:

exp\u结果={
“新值”:[
'100', '100',
'250', '250',
'250', '50',
'90', '90',
'90', '90'
],
“上一个值”:[
'100', '100',
'100', '100',
'100', '250',
'50', '50',
'50', '50'
]
}
新值上一个值
0        100    100
1        100    100
2        250    100
3        250    100
4        250    100
5         50    250
6         90    50
7         90    50
8         90    50
9         90    50

我尝试了函数,但我的数据不是周期性的,我现在也不知道。

的想法是将所有没有最后一个连续的值转换为缺失值,然后将值转换到下一组,通过
ffill
将先前的值向前填充缺失值,通过
fillna
将第一个缺失值替换为原始值:

m = df['new_value'].shift(-1).eq(df['new_value'])
df['prev_value'] = df['new_value'].mask(m).shift().ffill().fillna(df['new_value'])
print (df)

  new_value prev_value
0       100        100
1       100        100
2       250        100
3       250        100
4       250        100
5        50        250
6        90         50
7        90         50
8        90         50
9        90         50