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

为何Pandas Series输出显两列却非DataFrame?求二者核心差异

Pandas中Series与DataFrame的区分疑问

我刚开始学习Pandas,若问题表述不够清晰还请见谅。

代码示例

# 创建从'1/1/1'开始的小时级时间序列,共31个时间单位
longTimeRange = pd.date_range('1/1/1', periods=31, freq='H')
# 为每个时间单位生成随机数,创建Series
aTimeSeries = pd.Series(np.random.randn(len(longTimeRange)), index=longTimeRange)

aTimeSeries.head()

输出结果

2001-01-01 00:00:00   -0.657026
2001-01-01 01:00:00   -1.244964
2001-01-01 02:00:00   -0.016981
2001-01-01 03:00:00    1.817097
2001-01-01 04:00:00   -0.419140
Freq: H, Length: 31, dtype: float64

疑问

该输出看似包含两列,为何仍被认定为Series而非DataFrame?若Series可呈现此类形式,如何与DataFrame区分?二者是否仅为数据访问方式不同的容器?


回答

首先要明确:Series是带索引的一维数组,你看到的输出左侧是它的index(索引),右侧才是实际存储的数据值——本质上它只有一组数据,只是显示时把索引列出来了,并非真正的两列数据。

而DataFrame是二维表格结构,它由多个Series组成,每个Series对应一列数据,每列可以有独立的列名,且通常共享同一行索引。

区分两者可以用这些简单方法:

  • 直接查类型:执行type(aTimeSeries)就能明确它是Series还是DataFrame
  • 看核心属性:Series只有values(一维数组)和index;DataFrame额外有columns属性存储列名,values是二维数组
  • 数据访问逻辑:Series可以直接通过位置aTimeSeries[0]或索引标签aTimeSeries['2001-01-01 00:00:00']取值;DataFrame必须先指定列(比如df['列名']),再定位行,或者用df.loc[行标签, 列名]这种二维访问方式

二者的差异不止于访问方式,本质结构完全不同:Series适用于存储单一维度的序列数据(比如某一指标的时间序列);DataFrame则用于存储多列关联的表格型数据(比如包含姓名、年龄、成绩的学生表)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:01:27