創造出很多新列我有一個的大數據幀df
(約100列,約7百萬行),我需要創建〜50個新變量/列這是當前變量的簡單轉換。繼續進行的一種方式是與許多.apply
語句(我只是用transform*
爲簡單的轉換,如max
或平方的佔位符):大多數Python的方式對大熊貓
df['new_var1'] = df['old_var1'].apply(lambda x : transform1(x))
...
df['new_var50'] = df['old_var50'].apply(lambda x : transform50(x))
另一種方法是首先建立一個字典
transform_dict = {
'new_var1' : lambda row : transform1(row),
...,
'new_var50' : lambda row : transform50(row)
}
然後寫一個.apply
與.concat
組合:
df = pd.concat([df,
df.apply(lambda r: pd.Series({var : transform_dict[var](r) for var in transform_dict.keys()}), axis=1)], axis=1)
我■一個方法優於其它,無論是在它是如何「Python化」是,或效率,可擴展性,靈活性?
我期望第二形式是更有效,因爲第一種方法被迭代遞增這將意味着的存儲器和數據複製許多重新分配作爲DF生長 – EdChum
除了使用df:'申請(拉姆達行:transform1( row))'只是寫'apply(transform1)'的較慢方法。 – DSM