使用python dataframes在数据没有更改时使用mean修复历史数据
我有一些历史数据,看起来像:使用python dataframes在数据没有更改时使用mean修复历史数据,python,pandas,dataframe,Python,Pandas,Dataframe,我有一些历史数据,看起来像: d1 d2 d3 d4 p1 1 2 2 4 p2 2 2 2 10 我知道从一天到另一天没有变化时会出现错误,所以我想用相邻值的平均值替换重复值,当重复的连续值超过两倍时,它应该是成比例的。 所以这些数据应该是这样的: d1 d2 d3 d4 p1 1 2 3* 4 p2 2 4* 8* 10 其中*表示它是“固定的”。有一个已经存在的函数,或者我应该手动迭代数据吗?II
d1 d2 d3 d4
p1 1 2 2 4
p2 2 2 2 10
我知道从一天到另一天没有变化时会出现错误,所以我想用相邻值的平均值替换重复值,当重复的连续值超过两倍时,它应该是成比例的。
所以这些数据应该是这样的:
d1 d2 d3 d4
p1 1 2 3* 4
p2 2 4* 8* 10
其中*表示它是“固定的”。有一个已经存在的函数,或者我应该手动迭代数据吗?IIUC,如果同一行上的值没有从一列更改到下一列,您需要
插值。借助于mask
,您可以将重复数据替换为nan,并使用shift
检查重复值的位置
print (df.mask(df.eq(df.shift(axis=1))).interpolate(axis=1))
d1 d2 d3 d4
p1 1.0 2.000000 3.000000 4.0
p2 2.0 4.666667 7.333333 10.0
但是要得到4和8,不确定你能用什么规则。8将是什么相邻值的平均值?我得到的4和8是:(2+10)/3所以我的第一个三分之一是4,第二个是8,第三个是d4(10)。好的,我认为它比我的4和8更好,非常感谢