【问题标题】:what's the difference between pandas DataFrame methods agg() and apply()?pandas DataFrame 方法 agg() 和 apply() 有什么区别?
【发布时间】:2022-11-15 08:15:22
【问题描述】:

在 pandas DataFrame.groupby() 对象上有很多关于 aggapply 的问题,但我不明白 DataFrame.agg()DataFrame.apply() 之间的区别。从下面的文档和 sn-p 来看,它们在我看来是一样的。如果存在与不适用于列操作的行操作具体相关的问题,我想了解它们。

import pandas as pd

a = pd.Series([True, False, False])
b = pd.Series([False, False, False])
c = pd.Series([True, True, False])
d = pd.Series([1, 2, 3])

print(pd.DataFrame({'a': a, 'b': b, 'c': c, 'd': d}).agg(lambda x: print(len(x)), axis=1))
print()
print(pd.DataFrame({'a': a, 'b': b, 'c': c, 'd': d}).apply(lambda x: print(len(x)), axis=1))
4
4
4
0    None
1    None
2    None
dtype: object

4
4
4
0    None
1    None
2    None
dtype: object

【问题讨论】:

  • 不,那是对 groupby 对象的讨论

标签: python pandas dataframe


【解决方案1】:

他们实际上都调用了相同的frame_apply(...) 函数,其中通常包含相同的内容。一个区别是df.agg()(实际上它本身与df.aggregate() 相同)有一个步骤,它调用reconstruct_func() 函数,该函数对您传入的函数进行一些清理/处理。

例如,您可以执行 df['col1'].agg(sum) 并获得结果,但如果执行 df['col1'].apply(sum),您将收到错误。不过,.agg().apply() 都可以使用字符串 'sum' - 因此我们看到 .agg() 可以有更多变化。 (这都是一列整数)

【讨论】:

    猜你喜欢
    • 2014-03-16
    • 2019-12-27
    • 2014-11-20
    • 2021-04-13
    • 2013-11-16
    • 1970-01-01
    相关资源
    最近更新 更多