python - 根据列名结尾拆分 pandas df
问题描述
data = {"name": [], "value": [], "x1xyz": [], "x2xyz": [], "x3xyz":[], "x1abc": [], "x2abc": [], "x3abc": []}
df = pd.DataFrame (data, columns = ['name', 'value', 'x1xyz', "x2xyz", "x3xyz", 'x1abc', "x2abc", "x3abc"])
我希望根据列名的结束方式分为两个单独的数据框,即:
xyz = {"name": [], "value": [], "xyz": [], "xyz": [], "xyz": []}
xyz = pd.DataFrame (keep, columns = ['name', 'value', 'x1xyz', 'x2xyz', 'x3xyz'])
abc = {"name": [], "value": [], "x1abc": [], "x2abc": [], "x3abc": []}
abc = pd.DataFrame (keep, columns = ['name', 'value', 'x1abc', 'x2abc', 'x3abc'])
我真的不确定如何处理这个问题?
在我使用的真实数据集中,列名结尾比 jsut 多两个。
解决方案
这是仅使用列表理解来选择列的替代解决方案:
endings = ["xyz", "abc"]
dfs = {e: df[["name", "value"] + [c for c in df.columns if c.endswith(e)]] for e in endings}
dfs
将是一个字典,其中每个键都是一个结尾,值是经过过滤以包含相关列的 DataFrame。
推荐阅读
- ruby-on-rails - 在 Rails 中,我可以在不更新数据库的情况下过滤一对多关系吗
- ros - ROS服务提供者需要订阅客户端主题
- asp.net-core - 从 Entity Framework Core 重置迁移
- c# - c# Global Keyboard Hook: 识别按键来自哪个键盘
- java - SpringBoot Maven 项目
- java - 简单的 P2P 服务器,对象在从服务器中继后损坏
- php - 如何根据用户类型在 Laravel 中创建路由?
- java - 动态位置变化java fx
- angular - 如何在 Angular 中监视 NPM 包
- c# - 从 Websocket svia c# 执行 Powershell 脚本以停止/启动网站