根据两行值的差异附加 nan 行

appending nan rows according to difference of two row value

你好,我有一个像这样的数据框:

df1
     A   B
0  0.7   7
1  1.0  10
2  1.2  12
3  1.4  14
4  1.8  18
5  14   7
6  17   10

我正在尝试根据 B 列行之间的差异附加 nan 行。我的意思是,例如,B 列第 0 行和第 1 行的差值为 3。因此我需要附加 2 个 nan 行以在它们之间具有连续的整数值。然后我将在它们之间进行插值。因为我有大量数据并且需要快速完成,所以我认为使用 pandas 更好,所以请告诉我 pandas 解决方案。我应该迭代它们吗?你怎么看?最终数据框将如下所示:

       0    1
0   0.07    7
1   0.08    8
2   0.09    9
3   0.10    10
4   0.11    11
5   0.12    12
6   0.13    13
7   0.14    14
8   0.15    15
9   0.16    16
10  0.17    17
11  0.18    18
12  14.00   7
13  16.00   8
14  18.00   9
15  17.00   10

这就是我尝试获取此内容的原因:

    0          1
0   0.07     7.0
1   NaN      NaN
2   NaN      NaN
3   0.10    10.0
4   0.11    11.0
5   0.12    12.0
6   NaN      NaN
7   0.14    14.0
8   0.15    15.0
9   NaN      NaN
10  NaN      NaN
11  0.18    18.0
12  14.00    7.0
13  NaN      NaN
14  NaN      NaN
15  17.00   10.0

我正在寻找最 pythonic 的方式,数据科学的最佳方式?谢谢

使用-

diff = (df['B'].shift(-1) - df['B']).fillna(1)
tmp = df.reindex(df.index.repeat(diff.mask(diff < 0, 1)))
tmp.mask(tmp.diff().eq(0)).reset_index(drop=True).interpolate()

输出

    A   B
0   0.7 7.0
1   0.8 8.0
2   0.9 9.0
3   1.0 10.0
4   1.1 11.0
5   1.2 12.0
6   1.3 13.0
7   1.4 14.0
8   1.5 15.0
9   1.6 16.0
10  1.7 17.0
11  1.8 18.0
12  14.0    7.0
13  15.0    8.0
14  16.0    9.0
15  17.0    10.0