Geniş bir veri çerçevem var df
(~ 100 sütun ve ~ 7 milyon satır) ve mevcut değişkenlerin basit dönüştürmeleri olan ~ 50 yeni değişken/sütun oluşturmam gerekiyor. Devam etmenin bir yolu (sadece basit dönüşümler böyle max
olarak veya kare alma için yer tutucu olarak transform*
kullanıyorum) birçok .apply
ifadelerle olacaktır:Çoğu Pythonic Yolu Pandalarda Çok Sayıda Yeni Sütun Yaratma
df['new_var1'] = df['old_var1'].apply(lambda x : transform1(x))
...
df['new_var50'] = df['old_var50'].apply(lambda x : transform50(x))
başka yolu da öncelikle bir sözlük
transform_dict = {
'new_var1' : lambda row : transform1(row),
...,
'new_var50' : lambda row : transform50(row)
}
oluşturmak olacaktır
ve sonra .concat
ile kombine birini .apply
yazın:
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)
ben diğeri üzerinde ne “Pythonic”, ya da verimlilik, ölçeklenebilirlik, esneklik gibi bir tercih edilir?
İlk yöntem, yinelemeli df yana – EdChum
büyüdükçe bellek ve veri kopyalama birçok tahsis edilecek anlamına gelecektir df artırma gibi ikinci bir şekilde daha verimli olması beklenebilir transform1 (row)) 'yazmak için daha yavaş bir yoldur (apply1). – DSM