Docs tuşları olarak çıktı sütun adlarını içeren bir dict kullanarak bir seferde GroupBy nesne üzerinde birden fazla işlevi nasıl uygulanacağını gösterir:
In [563]: grouped['D'].agg({'result1' : np.sum,
.....: 'result2' : np.mean})
.....:
Out[563]:
result2 result1
A
bar -0.579846 -1.739537
foo -0.280588 -1.402938
Ancak, bu yalnızca bir Series groupby nesnesinde çalışır. Ve bir dikte, bir grup tarafından DataFrame'e benzer şekilde iletildiğinde, anahtarların işlevin uygulanacağı sütun adları olmasını bekler.
Ne yapmak istiyorum birkaç sütun için birden çok işlev uygulamak (ancak belirli sütunları birden çok kez çalıştırılacaktır). Ayrıca, bazı işlevler groupby nesnesindeki diğer sütunlara bağlı olacaktır (sumif işlevleri gibi). Şu anki çözümüm, diğer satırlara bağlı işlevler için lambdas kullanarak, sütun sütun gitmek ve yukarıdaki kod gibi bir şey yapmaktır. Ama bu uzun zaman alıyor, (bence bir grup nesnesinden tekrar etmek uzun zaman alıyor). Tek bir seferde tüm groupby nesnesini yinelemem için değiştirmem gerekecek, ancak pandalarda bunu biraz temiz yapmak için yerleşik bir yol olup olmadığını merak ediyorum.
Örneğin, şöyle bir şey denedim
grouped.agg({'C_sum' : lambda x: x['C'].sum(),
'C_std': lambda x: x['C'].std(),
'D_sum' : lambda x: x['D'].sum()},
'D_sumifC3': lambda x: x['D'][x['C'] == 3].sum(), ...)
ancak beklendiği gibi agg
bir KeyError alıyorum (çünkü DataFrame'den anahtarlar bir sütun olması gerektiğinden).
Yapmak istediklerimi yapmak için herhangi bir yerleşik var mı veya bu işlevin eklenebileceği ihtimali var mı, yoksa sadece groupby'yi manuel olarak tekrarlamam gerekecek mi?
Teşekkürler