Here is a sample dataframe:
datetime temp T1 T2 T3 T4 T5
115 2020-01-04 02:53:00+00:00 58 0 0 0 0 0
116 2020-01-04 03:53:00+00:00 51 0 0 0 0 0
117 2020-01-04 04:53:00+00:00 49 0 0 0 0 0
118 2020-01-04 05:53:00+00:00 48 0 0 0 0 0
119 2020-01-04 06:00:00+00:00 48 0 0 0 0 0
120 2020-01-04 06:53:00+00:00 47 0 0 0 0 0
And here is what I want the output to be :
datetime temp T1 T2 T3 T4 T5
115 2020-01-04 02:53:00+00:00 58 0 0 0 0 0
116 2020-01-04 03:53:00+00:00 51 58 0 0 0 0
117 2020-01-04 04:53:00+00:00 49 51 58 0 0 0
118 2020-01-04 05:53:00+00:00 48 49 51 58 0 0
119 2020-01-04 06:00:00+00:00 48 48 49 51 58 0
120 2020-01-04 06:53:00+00:00 47 48 48 49 51 58
Use Series.shift
for col in df.columns[df.columns.str.contains('T')]:
df[col] = df['temp'].shift(int(col[1:]),fill_value = 0)
print(df)
We can also use pd.Index.difference
for col in df.columns.difference(['datetime','temp']):
df[col] = df['temp'].shift(int(col[1:]),fill_value = 0)
Output
datetime temp T1 T2 T3 T4 T5
115 2020-01-04-02:53:00+00:00 58 0 0 0 0 0
116 2020-01-04-03:53:00+00:00 51 58 0 0 0 0
117 2020-01-04-04:53:00+00:00 49 51 58 0 0 0
118 2020-01-04-05:53:00+00:00 48 49 51 58 0 0
119 2020-01-04-06:00:00+00:00 48 48 49 51 58 0
120 2020-01-04-06:53:00+00:00 47 48 48 49 51 58