【发布时间】:2021-03-01 14:26:49
【问题描述】:
【问题讨论】:
标签: python-3.x pandas time-series
【问题讨论】:
标签: python-3.x pandas time-series
您的解决方案应该通过转换为 numpy 数组来更改以避免索引对齐:
df.loc[7:10] = df.loc[3:6].to_numpy()
print (df)
XYZ
0 12
1 23
2 11
3 34
4 45
5 54
6 34
7 34
8 45
9 54
10 34
11 100
12 12
13 15
另一个想法是将0替换为Series.mask和Series.shift:
df = pd.DataFrame({'XYZ':[12,23,11,34,45,54,34,0,0,0,0,100,12,15]})
df['XYZ'] = df['XYZ'].mask(df['XYZ'].eq(0), df['XYZ'].shift(4))
print (df)
XYZ
0 12
1 23
2 11
3 34
4 45
5 54
6 34
7 34
8 45
9 54
10 34
11 100
12 12
13 15
【讨论】:
你也可以使用:
df.loc[7:11, 'XYZ'] = df.loc[3:7, 'XYZ'].tolist()
【讨论】: