我有一個函式可以驗證傳遞的資料框是否有幾列,如果沒有,它會創建它們并用0.0.
這需要一些時間來運行并且有幾個 if 陳述句。有什么辦法可以改進這個功能嗎?事實上,我為多個資料幀運行這個函式,但目前我需要為每個資料幀單獨運行這個函式,有沒有辦法同時為所有資料幀運行?
這是我的功能:
def validate_columns(df):
if 'A' not in df.columns:
df = df.withColumn('A', lit(0.0))
if 'B' not in df.columns:
df = df.withColumn('B', lit(0.0))
if 'C' not in df.columns:
df = df.withColumn('C', lit(0.0))
if 'D' not in df.columns:
df = df.withColumn('D', lit(0.0))
df_to_return = df.select('A', 'B', 'C', 'D')
return df_to_return
uj5u.com熱心網友回復:
對于單個資料幀,您可以使用for回圈來提高代碼的可理解性。您需要將列串列傳遞給該函式。
def validate_columns(df, cols_of_interest):
for c in cols_of_interest:
if c not in df.columns:
df = df.withColumn(c, lit(0.0))
result = df.select(*cols_of_interest)
return result
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536913.html
