You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python切片筛选Pandas DataFrame指定列的实现方法

关于筛选Pandas DataFrame中Luminosity列的实现问题

首先,你的代码是正确的,确实能精准提取出Luminosity列,并转换为适合后续建模的二维数组格式。

先梳理你的原代码逻辑

你创建的DataFrame结构如下:

import pandas as pd
dataframe = pd.DataFrame({'Date': ['2017-04-01 00:24:17','2017-04-01 00:54:16','2017-04-01 01:24:17'] * 1000, 'Luminosity':[2,3,4] * 1000})

然后通过iloc[:,1]选中第二列(索引从0开始),用.values转换为NumPy数组,最后reshape(-1,1)把一维数组转为二维——这一步通常是为了适配scikit-learn等机器学习库的输入要求,整个流程完全没问题,能得到你需要的结果。

更简洁的优化方案

不过有几种更直观、紧凑的写法可以替代,供你参考:

  1. 链式调用一步完成提取与变形
    不需要拆分两步,直接把操作连在一起,代码更简洁:
X = dataframe['Luminosity'].values.reshape(-1, 1)

效果和你的原代码完全一致,但可读性更强。

  1. 用双层方括号直接获取二维结构
    如果使用[['Luminosity']](注意是双层方括号),会直接得到一个仅含目标列的DataFrame,转成数组后天然就是二维的,省去手动reshape的步骤:
X = dataframe[['Luminosity']].values
  1. 官方推荐的to_numpy()替代.values
    Pandas官方更建议用to_numpy()方法转换为NumPy数组,它的行为更明确,在处理混合数据类型的列时表现更稳定:
# 对应方案1的优化版
X = dataframe['Luminosity'].to_numpy().reshape(-1, 1)
# 对应方案2的优化版
X = dataframe[['Luminosity']].to_numpy()

这些优化方案都能达到同样的目标,你可以根据自己的编码习惯选择最合适的写法。

内容的提问来源于stack exchange,提问作者bgarcial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:32:52