В примере кода вы передаете номер аргумента.
iot_f = iot_f.map(
lambda p: Row(
DeviceImei = str(p[0]),
DeviceTimeStamp = p[1],
Avg_PF=float(p[2]),
Sum_PF=float(p[3]),
FRQ=int(p[4]),
THDVL1=float(p[5]),
T,
MachineName = str(p[7]),
HUM = int(p[8]),
OLI = int(p[9]),
GridStatus = bool(p[10])
)
).toDF()
Здесь вам не хватает значения для аргумента T
(make it T = p[6]
), т.е. вы получаете исключение.
В Python, когда передается любое количество аргументов, обязательно, чтобы вам сначала нужно было передать позиционный аргумент, а затем ключевые аргументы.
Здесь вы используете Row Class
, поэтому каждый аргумент должен быть либо ключевым, либо позиционным.
Если использовать оба, то позиционное должно быть первым. как
iot_f = iot_f.map(
lambda p: Row(
str(p[0]),
p[1],
float(p[2]),
Sum_PF=float(p[3]),
FRQ=int(p[4]),
THDVL1=float(p[5]),
T = p[6],
MachineName = str(p[7]),
HUM = int(p[8]),
OLI = int(p[9]),
GridStatus = bool(p[10])
)
).toDF()