当前位置: 首页 > news >正文

df数据 按列 提取为单个列表

方法1:直接提取为单个列表

import pandas as pd # 单行DataFrame示例 df = pd.DataFrame({ 'a_1': [1], 'b_1': [10], 'a_2': [2], 'b_2': [20], 'a_3': [3], 'b_3': [30] }) # 筛选列名 a_cols = [col for col in df.columns if col.startswith('a_')] b_cols = [col for col in df.columns if col.startswith('b_')] # 提取第一行 a_list = df[a_cols].iloc[0].tolist() # 使用 iloc[0] 获取第一行 b_list = df[b_cols].iloc[0].tolist() print("a值列表:", a_list) # [1, 2, 3] print("b值列表:", b_list) # [10, 20, 30]

方法2:使用squeeze()方法

# squeeze()将单行/单列DataFrame转换为Series a_series = df.filter(regex='^a_').squeeze() # 筛选a列并压缩 b_series = df.filter(regex='^b_').squeeze() # 筛选b列并压缩 a_list = a_series.tolist() b_list = b_series.tolist() print("a值列表:", a_list) # [1, 2, 3] print("b值列表:", b_list) # [10, 20, 30]

方法3:使用values[0]

# 直接获取第一行的值 a_values = df.filter(regex='^a_').values[0] # array([1, 2, 3]) b_values = df.filter(regex='^b_').values[0] # array([10, 20, 30]) a_list = a_values.tolist() b_list = b_values.tolist() print("a值列表:", a_list) print("b值列表:", b_list)

方法4:处理可能的多行情况(通用方法)

def extract_ab_lists(df): """通用函数,处理单行或多行DataFrame""" a_cols = sorted([col for col in df.columns if col.startswith('a_')], key=lambda x: int(x.split('_')[1])) b_cols = sorted([col for col in df.columns if col.startswith('b_')], key=lambda x: int(x.split('_')[1])) if len(df) == 1: # 单行情况 a_list = df[a_cols].iloc[0].tolist() b_list = df[b_cols].iloc[0].tolist() return a_list, b_list else: # 多行情况 a_list = df[a_cols].values.tolist() b_list = df[b_cols].values.tolist() return a_list, b_list # 使用示例 a_list, b_list = extract_ab_lists(df) print("a值列表:", a_list) print("b值列表:", b_list)

方法5:按数字排序的完整示例

# 确保列按数字顺序排序 import re # 提取并按数字排序 def sort_columns(columns): """按a_1, a_2, a_3这样的数字顺序排序""" return sorted(columns, key=lambda x: int(re.search(r'\d+', x).group())) a_cols = sort_columns([col for col in df.columns if col.startswith('a_')]) b_cols = sort_columns([col for col in df.columns if col.startswith('b_')]) # 提取单行数据 row = df.iloc[0] a_list = [row[col] for col in a_cols] b_list = [row[col] for col in b_cols] print("排序后的a值列表:", a_list) # [1, 2, 3] print("排序后的b值列表:", b_list) # [10, 20, 30]

方法6:转换为字典格式

# 如果需要更结构化的结果 result = { 'a_values': df.filter(regex='^a_').squeeze().tolist(), 'b_values': df.filter(regex='^b_').squeeze().tolist() } print("字典格式:", result) # 输出: {'a_values': [1, 2, 3], 'b_values': [10, 20, 30]}

推荐使用的方法

对于单行DataFrame,最简洁的方法是:

# 简洁版 df_single_row = pd.DataFrame({ 'a_1': [1], 'b_1': [10], 'a_2': [2], 'b_2': [20], 'a_3': [3], 'b_3': [30] }) # 一行代码搞定 a_list = df_single_row.filter(regex='^a_').squeeze().tolist() b_list = df_single_row.filter(regex='^b_').squeeze().tolist() print("a:", a_list) # [1, 2, 3] print("b:", b_list) # [10, 20, 30]

关键点:

  1. filter(regex='^a_'):筛选所有以'a_'开头的列

  2. squeeze():将单行DataFrame转换为Series

  3. tolist():将Series转换为列表

这样就能得到你想要的:所有a值在一个列表中,所有b值在另一个列表中。

http://www.cnnetsun.cn/news/70916.html

相关文章:

  • 将DataFrame转换为列表
  • ZeroOmega代理管理:3分钟掌握浏览器智能代理的完整指南
  • 27、实用awk程序大揭秘
  • Reactor Core终极指南:掌握JVM高性能异步编程核心技术
  • Linux网络编程之封装Socket模块现实意义和价值
  • LangChain输出解析器提取Qwen-Image-Edit-2509编辑指令结构
  • Python字典的`==`操作:从表面相等到深度洞察
  • 3步完成数据库升级:从SQLite到MySQL的智能迁移方案
  • 基于Spring Boot+Vue的电子政务服务管理系统
  • HunyuanVideo-Foley + Git 工作流整合:实现自动化音效生成CI/CD
  • Java开发场景下AI代码生成技术实测报告:效率与安全性双重验证
  • 力扣刷题知识点总结
  • 寻找两个正序数组的中位数:思路与实现
  • 商业广告音效定制避坑指南:3分钟搞懂版权费用与隐藏成本
  • 5个让玩家身临其境的游戏音效设计秘诀(附实战资源库)
  • 影视剪辑必看:5个关键技巧教你避开音效版权雷区
  • 游戏串流实战手册:从零搭建高效串流系统
  • 小米运动步数自动同步:2025年免费刷步数完整教程
  • 原神帧率解锁神器:突破60帧限制的终极解决方案
  • STL——set
  • [CTF]攻防世界:fakebook (sql注入)
  • Zepp Life自动刷步终极指南:3分钟搞定微信支付宝同步
  • FLUX.1-dev与Docker镜像优化:最小化容器体积提升加载速度
  • Applite:Mac软件管理终极指南,告别命令行烦恼
  • Ollama下载GPT-OSS-20B并实现本地化AI服务的完整教程
  • SkyWalking 与 Zipkin、Prometheus 深度对比分析
  • 全面升级!yudao-cloud v2.4.2重磅发布:AI大模型与工作流引擎双引擎驱动业务创新
  • gpt-oss-20b结合Dify部署实现可视化AI工作流
  • AI自动修复CHLSProxy SSL证书错误:开发者新利器
  • 77777