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