You don't need bitwise-or, just packing the 16-bit value into a 32-bit one, i.e. a promotion:
data_pkd = ctypes.c_int32(data_in.value)
To actually perform bitwise-or on ctypes values, operate on their value attribute:
x = ctypes.c_int16(...)
y = ctypes.c_int32(...)
data_pkd = ctypes.c_int32(x.value | y.value)