讓我們假設我有以下DataFrame作業:
df1 = pd.DataFrame(
{
"CST": [1, 2, 3],
"BRAND": ["A", "B", "C"],
}
)
print(df1)
CST BRAND
0 1 A
1 2 B
2 3 C
接下來,我定義了以下輔助函式:
def add_col(df, field_name, only_x=True):
attrs = ["X", "Y", "Z"]
for attr in attrs:
df["_".join([field_name, attr])] = 999
return df
df2 = add_col(df1, "BRAND")
print(df2)
CST BRAND BRAND_X BRAND_Y BRAND_Z
0 1 A 999 999 999
1 2 B 999 999 999
2 3 C 999 999 999
正如您在上面的函式中看到的那樣,我有一個布爾引數only_x,它在函式內部的任何地方都沒有實作/使用。這個引數的目的是不言自明的:當設定為True(默認)時,在上面的例子中,它應該只創建BRAND_X列。
這可能是一個相當簡單的實作,但是由于在 Python/編程方面經驗不足,我很難找到最好的方法。我唯一能想到的是以下內容:
def add_col(df, field_name, only_x=True):
attrs = ["X", "Y", "Z"]
if only_x:
attrs = [attrs[0]]
for attr in attrs:
df["_".join([field_name, attr])] = 999
return df
df2 = add_col(df1, "BRAND", only_x=True)
print(df2)
CST BRAND BRAND_X
0 1 A 999
1 2 B 999
2 3 C 999
雖然這確實有效,但我不確定這是最好的方法。這在邏輯結構上被認為是好的代碼嗎?如果沒有,這里有什么更好的方法?
uj5u.com熱心網友回復:
分配變數時測驗引數
def add_col(df, field_name, only_x=True):
attrs = ["X"] if only_x else ["X", "Y", "Z"]
// rest of function
但更通用的設計可能是使attrs引數具有合適的默認值。
def add_col(df, field_name, attrs = ["X", "Y", "Z"]):
然后,當您只需要X列時,attrs=["X"]請在呼叫中使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426849.html
