initial_state = ["up", "down"] * (M.lat.N_sites // 2)
initial_state[1] = "up" # for some index where there is a "down" before
For an infinite MPS, that is not possible, because you can only change the filling density,
and one extra electron in an infinite system is a vanishing density.
You can chose a larger unit cell size (e.g L=11) and have e.g. 6 up and 5 down spins.
If you want to use charge conservation, your state has to have a fixed particle number (of up spins), and this is not possible with a pure product state, since that wouldn't have a well defined number of up/down spins, see this discussion.
Initializing singlets with from_singlets should still work and have well defined particle numbers, but is probably not what you want...