了解Pandas数据帧应用中x.name的用法

2024-09-30 02:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在以下示例中,我对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表示一个数据帧,而另一个表示另一个,以此类推)


Tags: columnslambda函数name示例用法dataframedf

热门问题