第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在大熊貓的一個聚合中使用多個 idxmin() 和 idmax() 進行多重索引

在大熊貓的一個聚合中使用多個 idxmin() 和 idmax() 進行多重索引

呼啦一陣風(fēng) 2023-01-04 16:13:47
在 R data.table 中,可以很容易地在一個聚合中使用 argmin 或 argmax 函數(shù)在多個列上進行聚合。例如對于 DT:> DT = data.table(id=c(1,1,1,2,2,2,2,3,3,3), col1=c(1,3,5,2,5,3,6,3,67,7), col2=c(4,6,8,3,65,3,5,4,4,7), col3=c(34,64,53,5,6,2,4,6,4,67))> DT    id col1 col2 col3 1:  1    1    4   34 2:  1    3    6   64 3:  1    5    8   53 4:  2    2    3    5 5:  2    5   65    6 6:  2    3    3    2 7:  2    6    5    4 8:  3    3    4    6 9:  3   67    4    410:  3    7    7   67> DT_agg = DT[, .(agg1 = col1[which.max(col2)]                , agg2 = col2[which.min(col3)]                , agg3 = col1[which.max(col3)])              , by= id]> DT_agg   id agg1 agg2 agg31:  1    5    4    32:  2    5    3    53:  3    7    4    7agg1 是 col1 的值,其中 col2 的值最大,按 id 分組。agg2 是 col2 的值,其中 col3 的值最小,按 id 分組。agg3 是 col1 的值,其中 col3 的值最大,按 id 分組。在 Pandas 中,這怎么可能,使用 groupby 和 agg 在一個聚合操作中完成所有三個聚合?我不知道如何在 Python 的一個聚合函數(shù)中合并三個不同的索引。這是 Python 中的數(shù)據(jù)框:DF =pd.DataFrame({'id':[1,1,1,2,2,2,2,3,3,3], 'col1':[1,3,5,2,5,3,6,3,67,7], 'col2':[4,6,8,3,65,3,5,4,4,7], 'col3':[34,64,53,5,6,2,4,6,4,67]})DFOut[70]:    id  col1  col2  col30   1     1     4    341   1     3     6    642   1     5     8    533   2     2     3     54   2     5    65     65   2     3     3     26   2     6     5     47   3     3     4     68   3    67     4     49   3     7     7    67
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經(jīng)驗 獲得超1個贊

你可以試試這個,


DF.groupby('id').agg(agg1=('col1',lambda x:x[DF.loc[x.index,'col2'].idxmax()]),

                     agg2 = ('col2',lambda x:x[DF.loc[x.index,'col3'].idxmin()]),

                     agg3 = ('col1',lambda x:x[DF.loc[x.index,'col3'].idxmax()]))


    agg1  agg2  agg3

id

1      5     4     3

2      5     3     5

3      7     4     7



查看完整回答
反對 回復(fù) 2023-01-04
?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

玩弄這個問題,主要是為了看看我是否可以提高原始解決方案的速度。這比命名聚合更快。


grp = df.groupby("id")


        pd.DataFrame({ "col1": df.col1[grp.col2.idxmax()].array,

                       "col2": df.col2[grp.col3.idxmin()].array,

                       "col3": df.col1[grp.col3.idxmax()].array},

                       index=grp.indices)


    col1    col2    col3

1   5       4       3

2   5       3       5

3   7       4       7

加速~3x。


查看完整回答
反對 回復(fù) 2023-01-04
?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

tidyversepython中的一種方式怎么樣:


>>> from datar.all import f, tibble, group_by, which_max, which_min, summarise

>>> 

>>> DF = tibble(

...     id=[1,1,1,2,2,2,2,3,3,3], 

...     col1=[1,3,5,2,5,3,6,3,67,7],

...     col2=[4,6,8,3,65,3,5,4,4,7], 

...     col3=[34,64,53,5,6,2,4,6,4,67]

... )

>>> 

>>> DF >> group_by(f.id) >> summarise(

...     agg1=f.col1[which_max(f.col2)],

...     agg2=f.col2[which_min(f.col3)],

...     agg3=f.col1[which_max(f.col3)]

... )

       id    agg1    agg2    agg3

  <int64> <int64> <int64> <int64>

0       1       5       4       3

1       2       5       3       5

2       3       7       4       7

我是datar包的作者。如果您有任何問題,請隨時提交問題。



查看完整回答
反對 回復(fù) 2023-01-04
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號