...
Code Block |
---|
|
# ruim
flights = flights.join(aircraft, 'aircraft_id')
# ruim também
flights = flights.join(aircraft, 'aircraft_id', 'inner')
# bom
flights = flights.join(aircraft, 'aircraft_id', how='inner') |
Encadeamento de expressões
Evite encadear expressões em expressões de várias linhas com tipos diferentes, principalmente se tiverem comportamentos ou contextos diferentes. Por exemplo, misturando a criação de colunas ou fazendo joining com select e filter.
Code Block |
---|
|
# ruim
df = (
df
.select('a', 'b', 'c', 'key')
.filter(F.col('a') == 'truthiness')
.withColumn('boverc', F.col('b') / F.col('c'))
.join(df2, 'key', how='inner')
.join(df3, 'key', how='left')
.drop('c')
)
# melhor (seperarando em steps)
# primeiro: selecionamos e filtramos os dados que precisamos
# segundo: criamos as colunas que precisamos
# terceiro: joining com outros dfs
df = (
df
.select('a', 'b', 'c', 'key')
.filter(F.col('a') == 'truthiness')
)
df = df.withColumn('boverc', F.col('b') / F.col('c'))
df = (
df
.join(df2, 'key', how='inner')
.join(df3, 'key', how='left')
.drop('c')
) |
Ter cada grupo de expressões isolado em seu bloco de códico lógico melhora a legibilidade e torna mais fácil encontrar a lógica relevante.
Code Block |
---|
|
# ruim
df = (
df
.select('foo', 'bar', 'foobar', 'abc')
.filter(F.col('abc') == 123)
.join(another_table, 'some_field')
)
# melhor
df = (
df
.select('foo', 'bar', 'foobar', 'abc')
.filter(F.col('abc') == 123)
)
df = df.join(another_table, 'some_field', how='inner') |
...