Can't display the two float values correctly from pyserial on Arduino's LCD
I don't understand why you read the bytes this way. Your original version was reading only the bytes of the first float into xdata and -1 into ydata. (read returns -1 if no data is available, it doesn't wait.) Now when two bytes are read with readBytes, first two bytes of the first float are written one into xdata[0] and second into ydata[0].

read first float with readBytes(xdata, 4) and the the second with readBytes(ydata, 4)