You shouldn't create a new Player table each time. It generates more garbage and it breaks other code that has taken a local reference to the object.
Here's some simple example code showing how to update a field. This is the most straightforward way of doing it; there are faster but less readable alternatives (and you know what they say: premature optimization is the root of all evil):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
int main(void)
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
// create 'Player'object/table
lua_createtable(L, 0, 1);
lua_pushinteger(L, 100);
lua_setfield(L, -2, "Life");
lua_setglobal(L, "Player");
// take 10 Life away
lua_getglobal(L, "Player");
lua_getfield(L, -1, "Life");
lua_pushinteger(L, lua_tointeger(L, -1) - 10);
lua_setfield(L, -3, "Life");
lua_close(L);
return EXIT_SUCCESS;
}