如何在DataFrame方法链中重命名最后一列?
如何在Pandas方法链中重命名处理后DataFrame的最后一列?
这个场景我太熟悉了——在方法链里,前面的切片操作已经生成了一个和原table完全不同的新DataFrame,但rename本身没法直接引用这个刚生成的DataFrame的列(确实没有self这种语法),不过有个非常简洁的解决方案,用pipe方法就能搞定:
核心解决方案:用pipe传递当前DataFrame
pipe的作用就是把方法链中当前的DataFrame作为参数传给后续的函数,这样你就能直接拿到这个处理后的DataFrame,进而精准获取它的最后一列名称。代码写法如下:
result = table.iloc[:,2:-1].pipe(lambda df: df.rename(columns={df.columns[-1]: "Text"}))
为什么这能行?
- 首先
table.iloc[:,2:-1]执行切片操作,生成一个新的DataFrame; - 接着
pipe把这个新DataFrame传给lambda函数里的df参数; - 最后在
rename里,通过df.columns[-1]直接获取这个新DataFrame的最后一列名称,将其重命名为"Text"。
举个实际例子验证
假设原table的列是['ID', 'Name', 'Age', 'Address', 'Notes'],执行table.iloc[:,2:-1]后得到的列是['Age', 'Address'],用上面的代码处理后,结果的列就变成了['Age', 'Text'],完全符合你的需求。
内容的提问来源于stack exchange,提问作者Lorenz
相关产品推荐
相关产品推荐

