【问题标题】:Pandas: Get abs() mean() in Aggregate functionPandas:在聚合函数中获取 abs() mean()
【发布时间】:2020-08-24 00:21:32
【问题描述】:

From the docs 可以像这样.aggregate dataframe.groupby 对象:

df = pd.DataFrame([[1, 2, 3],
                   [-4, 5, 6],
                   [7, 8, 9],
                   [np.nan, np.nan, np.nan]],
                  columns=['A', 'B', 'C'])

然后像这样aggregate

my_agg = {'A' : ['mean', 'min'], 'B' : ['mean', 'max']}
df.agg(my_agg)

很好,但我想在这里取列Aabs(np.mean)。是否可以将其定义为my_agg 的一部分?什么是 dask 的解决方案?

【问题讨论】:

    标签: python-3.x pandas pandas-groupby dask dask-dataframe


    【解决方案1】:

    是的,我们可以通过lambda

    my_agg = {'A' : ['mean', 'min', lambda x : abs(x.mean())], 'B' : ['mean', 'max']}
    df.agg(my_agg)
    Out[194]: 
                     A    B
    <lambda>  1.333333  NaN
    max            NaN  8.0
    mean      1.333333  5.0
    min      -4.000000  NaN
    

    【讨论】:

    • 是的,这非常适合pandas.DataFrame。对于dask,它产生ValueError: unknown aggregate lambda。所以看起来lambda不能用在这个地方。
    • @gies0r 尝试使用 def 你的函数 ~ 并使用你的函数 agg
    • Dask 不是您最初问题的一部分。您可以编辑或重新提问。
    • @mdurant 它作为原始问题中的标签包含在其中。我做了一个简短的更新,也要求 dask。
    猜你喜欢
    • 2017-12-21
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2021-08-24
    • 2012-08-26
    • 2012-03-10
    相关资源
    最近更新 更多