使用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更好,非常感谢