當使用df.mean()時,我得到一個結果,其中給出每列的平均值。現在讓我們說我想要第一列的平均值和第二列的平均值。有沒有辦法做到這一點?我不想拆卸和重新組裝數據框。熊貓:將不同的功能應用於不同的列
我最初的想法是做沿着pandas.groupby.agg的線(),像這樣的東西:
df = pd.DataFrame(np.random.random((10,2)), columns=['A','B'])
df.apply({'A':np.mean, 'B':np.sum}, axis=0)
Traceback (most recent call last):
File "<ipython-input-81-265d3e797682>", line 1, in <module>
df.apply({'A':np.mean, 'B':np.sum}, axis=0)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3471, in apply
return self._apply_standard(f, axis, reduce=reduce)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3560, in _apply_standard
results[i] = func(v)
TypeError: ("'dict' object is not callable", u'occurred at index A')
但顯然這是行不通的。看起來像傳遞一個字典將是一個直觀的方式,但有沒有另一種方式(同樣沒有反彙編和重新組裝DataFrame)?
實際上這很不錯。我的解決方法是在數據框中插入一列,在該列上執行groupby,然後將字典傳遞給聚合方法。 – pbreach 2014-10-18 03:37:51
謝謝!我注意到,如果DataFrame中的字段數多於函數字典中的字段,則會失敗。 @ bill-letson你也看過嗎? – 2016-10-20 12:36:19
完整的實現應該包含一個返回標識函數的嘗試KeyError子句:lambda x:x – 2017-01-03 16:47:01