python - 如何使用 lambda 重命名 DataFrame 列?
问题描述
我正在做:
df.apply(lambda x: x.rename(x.name + "_something"))
我认为这应该返回带有 _something 附加到所有列的列,但它只返回相同的 df。
我究竟做错了什么?
编辑:我需要逐列处理系列,而不是数据框对象,因为我将x
在 lambda 中应用其他转换,此处未显示。
编辑 2 完整上下文:
我有一个时间序列数据框,我正在尝试从数据中生成特征。
我写了一堆原始函数,例如:
def sumn(n, s):
return s.rolling(n).sum().rename(s.name + "_sum_" + str(n))
当我将它们应用于 时Series
,它会很好地重命名它们。
当我将它们应用于 a 中DataFrame
的列时,数值转换会通过,但rename
不起作用。
(我想这意味着 aDataFrame
不仅仅是 的集合Series
,这很可能意味着我现在必须明确地重命名 df 上的东西)
解决方案
我认为你可以使用 pd.concat 来做到这一点:
pd.concat([df[e].rename(df[e].name+'_Something') for e in df],1)
在列表推导中,您可以添加其他逻辑:
df[e].rename(df[e].name+'_Something').apply(...)
如果直接使用 df.apply,则无法更改列名。我想不出办法
推荐阅读
- spring - 我正在开发一个网站,我知道 bootstrap 并学习了 spring 我想知道还有什么可以让它变得更好?
- java - 使用 AJAX 选择重新加载 div 后的 Spring / Thymeleaf 模板问题(*localidad 的问题)
- node.js - 在创建反应项目时在“npx create-react-app my-app”之后运行命令“npm start”时出错
- wpf - 如何将工具提示放在按钮上以在 WPF 中启用和禁用
- amazon-web-services - 带有 ssl 的单个 alb 后面的私有子网中的几个域
- python - 如何在 Django 中按类别筛选产品?
- vba - 刷新子表单
- django-rest-framework - 从 Django REST 框架中的访问令牌获取用户详细信息 - 简单 JWT
- node.js - 当我使用 Model.find({}) 查找所有带有 mongoose 的文档时,我可以取回格式化的 json 响应吗?
- r - 保存文件并在绘图中显示