限制于 pandas 方法链接,如何在不使用管道的情况下使用带有 lambda 函数的最后一个数据帧状态来应用合并方法?
下面的代码有效。但这取决于管道方式。
(pd.DataFrame(
[{'YEAR':2013,'FK':1, 'v':1},
{'YEAR':2013,'FK':2, 'v':2},
{'YEAR':2014,'FK':1, 'v':3},
{'YEAR':2014,'FK':2, 'v':4}
])
.pipe(lambda w: w.merge(w.query('YEAR==2013')[['FK','v']],
on='FK',
how='left'
))
)
下面的代码不起作用。
(pd.DataFrame(
[{'YEAR':2013,'FK':1, 'v':1},
{'YEAR':2013,'FK':2, 'v':2},
{'YEAR':2014,'FK':1, 'v':3},
{'YEAR':2014,'FK':2, 'v':4}
])
.merge(lambda w: w.query('YEAR==2013'),
on='FK',
how='left'
)
)
返回:
TypeError: Can only merge Series or DataFrame objects, a <class 'function'> was passed