Eu uso o seguinte código:
random = [("ABC",xx, 1),
("DEF",yy,1),
("GHI",zz, 0)
]
randomColumns = ["name","id", "male"]
randomDF = spark.createDataFrame(data=random, schema = randomColumns)
test_df = randomDF.select("name", "id")
test_df.filter(f.col("male") == '1').show()
A partir do código acima eu esperava que resultar em um erro porque, para o test_df eu não selecione o macho coluna do original dataframe. Surpreendentemente, a consulta acima funciona muito bem, sem qualquer erro e emite o seguinte:
+---------+-------+
|name | id|
+---------+-------+
| abc| xx|
| def| yy|
+---------+-------+
Eu quero entender a lógica por trás do que de ignição está fazendo. Como por faísca documentação Select retorna um novo dataframe. Então por que ainda é capaz de usar o masculino coluna do pai dataframe.