I have a dataframe as below.
+----------+-------+-----+-------+-------+-----+
| Date | A | B | C | D | E |
+----------+-------+-----+-------+-------+-----+
| 1-Jan-21 | 1,089 | | | 195 | |
+----------+-------+-----+-------+-------+-----+
| 2-Jan-21 | 609 | 547 | 491 | 1,091 | |
+----------+-------+-----+-------+-------+-----+
| 3-Jan-21 | 1,440 | 824 | 184 | 512 | 665 |
+----------+-------+-----+-------+-------+-----+
| 4-Jan-21 | 704 | 632 | 345 | | 969 |
+----------+-------+-----+-------+-------+-----+
| 5-Jan-21 | 297 | | 1,426 | | 555 |
+----------+-------+-----+-------+-------+-----+
df = pd.DataFrame({
'Date' : ['1-Jan-21','2-Jan-21','3-Jan-21','4-Jan-21','5-Jan-21'],
'A': [1089, 609, 1440, 704, 297],
'B': [np.nan, 547, 824, 632, np.nan],
'C': [np.nan, 491, 184, 345, 1426],
'D': [195, 1091, 512, np.nan, np.nan],
'E': [np.nan, np.nan, 665, 969, 555]
})
I want to ignore the Nan
values and bring down all the values to a single base/floor and rename the Date
values as t
, t-1
,t-2
and so on.
my desired output is as below.
+------+-------+-----+-------+-------+-----+
| time | A | B | C | D | E |
+------+-------+-----+-------+-------+-----+
| t-4 | 1,089 | | | | |
+------+-------+-----+-------+-------+-----+
| t-3 | 609 | | 491 | | |
+------+-------+-----+-------+-------+-----+
| t-2 | 1,440 | 547 | 184 | 195 | 665 |
+------+-------+-----+-------+-------+-----+
| t-1 | 704 | 824 | 345 | 1,091 | 969 |
+------+-------+-----+-------+-------+-----+
| t | 297 | 632 | 1,426 | 512 | 555 |
+------+-------+-----+-------+-------+-----+
how should I approach to solve this in pandas
or numpy
?