gpt4 book ai didi

python - 移动数据中的非周期性值

转载 作者:行者123 更新时间:2023-12-04 10:39:52 25 4
gpt4 key购买 nike

我有一个 data字典是这样的:

data = {
'new_value': [
'100', '100',
'250', '250',
'250', '50',
'90', '90',
'90', '90'
],
'prev_value': [
'None', 'None',
'None', 'None',
'None', 'None',
'None', 'None',
'None', 'None'
]
}

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

我希望得到另一本字典 exp_result像这样:

exp_result = {
'new_value': [
'100', '100',
'250', '250',
'250', '50',
'90', '90',
'90', '90'
],
'prev_value': [
'100', '100',
'100', '100',
'100', '250',
'50', '50',
'50', '50'
]
}

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

我试过 pandas.Series.shift() 函数,但我的数据不是周期性的,我现在不知道。

最佳答案

想法是通过 Series.mask 将所有没有最后连续值的值转换为缺失值,然后 Series.shift 对于下一组的值,通过 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

关于python - 移动数据中的非周期性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59984651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com