news 2026/5/12 2:17:56

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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值在另一个列表中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:57:18

Conda环境隔离保障Qwen-Image-Edit-2509依赖安全

Conda环境隔离保障Qwen-Image-Edit-2509依赖安全 在AI模型部署日益复杂的今天,一个看似不起眼的Python包版本差异,就可能让原本运行稳定的图像编辑系统突然“失明”——比如把用户要求删除的对象变成色块,或将中英文文字渲染成乱码。这种问题…

作者头像 李华
网站建设 2026/5/5 0:12:32

29、AWK实用程序与脚本编程指南

AWK实用程序与脚本编程指南 在AWK编程中,有许多实用的程序和脚本技巧,能够帮助我们更高效地处理数据、生成报告以及进行文件操作。下面将介绍一些常见的应用场景及对应的实现方法。 1. 字符处理函数的改进 最初编写的程序中,字符转写功能可能需要手动实现。但后来发现Bri…

作者头像 李华
网站建设 2026/5/5 0:12:07

2025/12/15英语打卡

1.我做过最正确的事情是不再跟所有人诉说我生活中的事情 The best thing i ever did is stop telling my life to everyone. The best thing i ever did is stop telling everyone what is going on in my life. 成分: 主系表,表语 - stop xxxx重要短语&…

作者头像 李华
网站建设 2026/5/5 0:11:55

31、gawk 高级功能:双向通信、网络编程、性能分析与国际化

gawk 高级功能:双向通信、网络编程、性能分析与国际化 在数据处理和编程领域,gawk 是一款功能强大的工具。它不仅能进行基本的数据处理和脚本编写,还具备许多高级功能,如与其他进程的双向通信、网络编程、性能分析以及国际化支持等。下面我们将详细介绍这些功能。 与其他…

作者头像 李华
网站建设 2026/5/10 15:47:02

mootdx终极指南:快速掌握通达信数据读取技巧

mootdx终极指南:快速掌握通达信数据读取技巧 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx mootdx作为一款专业的Python通达信数据读取工具,为金融数据分析师和量化交易爱…

作者头像 李华
网站建设 2026/5/3 6:37:35

从GitHub克隆到本地运行:完整部署Stable Diffusion 3.5 FP8图文教程

从GitHub克隆到本地运行:完整部署Stable Diffusion 3.5 FP8图文教程 在生成式AI的浪潮中,谁能快速将前沿模型落地到本地设备,谁就掌握了内容创作的主动权。2024年发布的 Stable Diffusion 3.5(SD3.5) 凭借更强的语义理…

作者头像 李华