The training samples in a batch serve the same purpose. In your settings, day 1’s temperature will influence the model in a way that is different from day 2.
In your settings, a training sample should be:
input: [day1's temp, day2's temp, day3's temp, day 4's temp]
target: [day4's water level]

then a batch is (say batch_size is 4):
input: [[day1's temp, day2's temp, day3's temp, day 4's temp],
        [day2's temp, day3's temp, day4's temp, day 5's temp],
        [day3's temp, day4's temp, day5's temp, day 6's temp],
        [day4's temp, day5's temp, day6's temp, day 7's temp]]
target: [[day4's water level],
         [day5's water level],
         [day6's water level],
         [day7's water level]]

You could custom a Dataset to slide the window in your data, a small and incomplete example is
from torch.utils.data import Dataset
class WeatherData(Dataset):
    def __getitem__(self, idx):
        return {'inputs': [self.temp[i] for i in range(idx + 4)],
                'target': self.water[idx + 3]}