【问题标题】:what does "by = lambda x: lambda y: getattr(y, x)" mean?“by = lambda x: lambda y: getattr(y, x)”是什么意思?
【发布时间】:2016-08-19 04:42:01
【问题描述】:

有一个名为“subset”的dataFrame,代码如下。 pd 是熊猫的昵称。搞不懂by = lambda x: lambda y: getattr(y, x)是什么意思。

pivot = pd.pivot_table(subset, values='count', rows=['date'], cols=['sample'], fill_value=0)
by = lambda x: lambda y: getattr(y, x)
grouped = pivot.groupby([by('year'),by('month')]).sum()

【问题讨论】:

  • 假设 yearmonth 是列我猜它和grouped = pivot.groupby(['year', 'month']).sum()做同样的事情
  • yearmonth 不是列。这是它们第一次出现在代码中并且可以很好地运行。子集中有一个名为“日期”的列,我正在尝试找到它们之间的关系。@StefanoPotter

标签: python pandas lambda


【解决方案1】:

by = lambda x: lambda y: getattr(y, x) 等价于:

def by(x):
    def getter(y):
        return getattr(y, x)
    return getter

getattr(a, b) 从名为 a 的对象中获取名为 b 的属性。

所以by('bar') 返回一个从对象返回属性'bar' 的函数。

by('bar')(foo) 表示getattr(foo, 'bar') 大致是foo.bar

如果这没有帮助,请告诉我们您仍然遇到问题的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多