了解如何为熊猫的 groupby.apply 使用 lambda

时间:2021-01-26 08:45:54

标签: python

有人可以解释下面的未知函数 lambda 是如何知道使用列标签“Year”的吗?我试图调整这篇文章中的一个解决方案:

这是我从那篇文章中感兴趣的答案的图片: https://stackoverflow.com/questions/22691010/how-to-print-a-groupby-object#

并希望将 lambda 调整为我下面的代码:

report = pd.DataFrame([
    [2009, 10, 'Einstein'],
    [2010, 20, 'Einstein'],
    [2010, 30, 'Einstein'],
    [2009, 10, 'Planck'],
    [2009, 20, 'Planck'],
    [2009, 30, 'Planck']], 
    index = ['r','o','y','g','b','i'],
    columns = ['Year', 'Points', 'Username'])

grouped = report.groupby('Year')
grouped = grouped.apply(lambda a: a[:])

grouped

输出:

enter image description here

我正在尝试学习如何在这种情况下使用 lambda 函数。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这里的 lambda 函数用作另一个函数内部的匿名函数。 lambda a : a[:] 是输入可迭代类型 a 并输出 a[:] :a 的每个元素的函数。

grouped = report.groupby('Year') 返回一个 groupby 对象,其中包含有关按年份形成的组的信息。

grouped = grouped.apply(lambda a: a[:]) 将匿名函数 lambda 应用于 groupby 对象的每个“组”。

因此,对于共享同一年的每组数据,您将返回同一组的所有数据。 这就是您最终将数据框作为索引年份 (groupby('Year')) 的方式,其中包含每年所有相应数据。