【问题标题】:pandas return auxilliary column from groupby and maxpandas 从 groupby 和 max 返回辅助列
【发布时间】:2021-10-25 19:40:58
【问题描述】:

我有一个带有 3 列 A、B 和 V 的 pandas DataFrame。

我想要一个以 A 作为索引和一列的 DataFrame,其中包含最大 V 的 B

我可以使用 groupby 轻松创建具有 A 和最大 V 的 df,然后执行一些诡计来提取相应的 B,但这似乎是错误的想法。

我一直在玩 groupby 和 agg 的组合,没有任何乐趣。

样本数据:

A,B,V
MHQ,Q,0.5192
MMO,Q,0.4461
MTR,Q,0.5385
MVM,Q,0.351
NCR,Q,0.0704
MHQ,E,0.5435
MMO,E,0.4533
MTR,E,-0.6716
MVM,E,0.3684
NCR,E,-0.0278
MHQ,U,0.2712
MMO,U,0.1923
MTR,U,0.3833
MVM,U,0.1355
NCR,U,0.1058

【问题讨论】:

    标签: pandas pandas-groupby aggregate


    【解决方案1】:
    A = [1,1,1,2,2,2,3,3,3,4,4,4]
    B = [1,2,3,4,5,6,7,8,9,10,11,12]
    V = [21,22,23,24,25,26,27,28,29,30,31,32]
    df = pd.DataFrame({'A': A, 'B': B, 'V': V})
    res = df.groupby('A').apply(
        lambda x: x[x['V']==x['V'].max()]).set_index('A')['B'].to_frame()
    
    res
    
        B
    A    
    1   3
    2   6
    3   9
    4  12
    

    【讨论】:

    • 完成了这项工作。我不认为我自己会偶然发现这一点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2020-08-31
    • 2011-10-31
    • 2018-11-25
    相关资源
    最近更新 更多