2013-04-29 25 views
2

讓我們假設我們有獲得爲應用於DataFramegroupby操作的結果GroupBy對象:如何將函數應用於GroupBy對象的多個列?

grouped = data_frame.groupy(['col_1', 'col_2']) 

我們可以生成一個新的數據幀,如果我們在的GroupBy對象指定如何值應該是合併得到單個值。例如:

grouped.agg('col_3':sum, 'col_4':min, 'col_5':user_defined_function) 

在上述例子中,我們使用的是取列表(或,更精確地說,系列)作爲輸入,並返回一個值作爲輸出的功能。這很好,但我需要的是使用兩個系列作爲輸入。例如,我想從col_3col_4中獲取值,並使用它們生成單個值。

例如,我可能想知道col_3col_4中相應值之間的最大絕對差值。

有沒有辦法做到這一點在熊貓?

回答

3

如果你不爲每列指定一個函數,所有的列將被傳遞給函數(對於apply和agg)。所以:

data_frame.groupy(['col_1', 'col_2']).apply(lambda x: np.max(np.abs(x['col_3'] - x['col_4']))) 

這給出了每個組的col_3和col_4之間的絕對最大差異。

相關問題