2 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用numpy和數(shù)組切片
import numpy as np
n = 4
df['fnew'] = np.concatenate([np.repeat(df.f.values[n-1::n], n),
np.repeat(np.NaN, len(df)%n)])
輸出:
n=3
index dtm f fnew
0 0 00:00:00 50.065 50.058
1 1 00:00:01 50.061 50.058
2 2 00:00:02 50.058 50.058
3 3 00:00:03 50.049 50.044
4 4 00:00:04 50.044 50.044
5 5 00:00:05 50.044 50.044
6 6 00:00:06 50.042 NaN
7 7 00:00:07 50.042 NaN
n = 4
index dtm f fnew
0 0 00:00:00 50.065 50.049
1 1 00:00:01 50.061 50.049
2 2 00:00:02 50.058 50.049
3 3 00:00:03 50.049 50.049
4 4 00:00:04 50.044 50.042
5 5 00:00:05 50.044 50.042
6 6 00:00:06 50.042 50.042
7 7 00:00:07 50.042 50.042
n = 5
index dtm f fnew
0 0 00:00:00 50.065 50.044
1 1 00:00:01 50.061 50.044
2 2 00:00:02 50.058 50.044
3 3 00:00:03 50.049 50.044
4 4 00:00:04 50.044 50.044
5 5 00:00:05 50.044 NaN
6 6 00:00:06 50.042 NaN
7 7 00:00:07 50.042 NaN

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是一種避免循環(huán)的方法df。
首先設(shè)置 a n,并生成一個(gè)包含現(xiàn)有索引的列表,不包括將用于重復(fù) 中值的行f:
n=4
ix = [x for i, x in enumerate(df.index.values) if (i + 1) % n != 0]
print(ix)
[0, 1, 2, 4, 5, 6]
現(xiàn)在將這些值設(shè)置為np.nan并使用bfill:
df.loc[ix, 'f'] = np.nan
df['f'] = df.f.bfill()
print(df)
index dtm f
0 0 00:00:00 50.049
1 1 00:00:01 50.049
2 2 00:00:02 50.049
3 3 00:00:03 50.049
4 4 00:00:04 50.042
5 5 00:00:05 50.042
6 6 00:00:06 50.042
7 7 00:00:07 50.042
添加回答
舉報(bào)