在以下示例中,我对apply和x.name的用法感到困惑:
df = pd.DataFrame(np.array([[1, 0, 0], [4, 5, 0], [7, 8, 9], [7, 8, 9], [4, 5, 0], [7, 8, 9]]),
columns=['a', 'b', 'c'],
index = ['1/1/2000', '1/1/2001', '1/1/2002', '1/1/2003', '1/1/2004', '1/1/2005'])
s = df.ne(0).cumsum().eq(0).sum()
df = df.apply(lambda x: x.shift(periods = -s[x.name], fill_value = 0))
根据讨论here,最终df具有标准化值
我理解map, apply and applymap之间的区别。我还阅读了x.name解释here
然而,我仍然对两件事感到困惑:
为什么在这样的场景中,我们使用apply而不是applymap,因为根据我的理解,我们得到的是元素操作结果
第二,也是更重要的,x.name在这里是如何工作的。有人能通过一个扩展函数来扩展lambda吗。如果我想把这一行写成for循环和函数,它会是什么样子。(x.shift和x.name没有意义,似乎一个x表示一个数据帧,而另一个表示另一个,以此类推)
目前没有回答
相关问题 更多 >
编程相关推荐