科普:python的pandas包中的DataFrame就是二维表

一、DataFrame 本质 = 带表头 + 行号的二维表

pandas 的 DataFrame 就是一个 二维表**

它自带的所有属性,都是为了描述这个二维表的:

行、列、值、形状、类型......**

text 复制代码
        df.columns(列名 / 表头)
          ↓        ↓
      'card_id' 'amount'  ← 列名
        ┌───────┬────────┐
row 0   │ user1 │ 10     │  ← df.values[0]
row 1   │ user1 │ 20     │  ← df.values[1]
row 2   │ user2 │ 50     │  ← df.values[2]
        └───────┴────────┘
  ↑
df.index(行索引 / 行号)

df.index

行索引(最左边那列)

text 复制代码
0  
1  
2

df.columns

列名(最上面那行)

text 复制代码
['card_id', 'amount']

df.values

纯数据(去掉行号、表头)

text 复制代码
[
 ['user1', 10],
 ['user1', 20],
 ['user2', 50]
]

df.shape

几行几列

text 复制代码
(3, 2)  → 3行,2列

df.size

总单元格数量

text 复制代码
3 × 2 = 6

df.dtypes

每一列的数据类型

text 复制代码
card_id    object
amount      int64

DataFrame = index(行) + columns(列) + values(数据)

  • 行:index
  • 列:columns
  • 数据:values

二、pandas 索引器

假设我们有一张表,长这样:

行索引(index) card_id amount city
0 user1 10 北京
1 user1 20 上海
2 user2 50 广州

1. df['列名']取列

  • 对应二维表取出某一列/几列(竖条)
python 复制代码
# 取出 amount 这一列
df['amount']

结果:

复制代码
0    10
1    20
2    50
Name: amount, dtype: int64

2. df.loc['行标签']按标签取行/列

python 复制代码
# 1. 取行(取 index=0 那一行)
df.loc[0]

# 2. 取单元格(取第0行、city列的值)
df.loc[0, 'city']

结果:

复制代码
'北京'

3. df.iloc[行号]按位置取行/列

python 复制代码
# 1. 取行(取第0行,第1个位置的行)
df.iloc[0]

# 2. 取单元格(取第0行、第2列的值),索引列不计列数
df.iloc[0, 2]

结果:

复制代码
'北京'

4. df.at['行标签', '列名']快速取单个值(最快)

python 复制代码
# 直接定位:行标签是0,列名是 city
df.at[0, 'city']

结果:

复制代码
'北京'

"一题多解"的对比(取 user1 的第一笔金额)

方法 代码 结果 评价
loc df.loc[0, 'amount'] 10 最推荐,可读性好
iloc df.iloc[0, 1] 10 精准,知道列在第几个位置
at df.at[0, 'amount'] 10 最快,只取一个值

三、举例

python 复制代码
df.columns = cols[:1] + [co + '_hist' for co in cols[1:]]

功能:对列名重新命名
给列名批量加后缀 _hist,但第一列 card_id 保持不变!


拆解成 3 步看

cols[:1]

保留第一列名不变

复制代码
['card_id']

cols[1:]

第二列开始到最后的所有列

复制代码
['A', 'B', 'C']

[co + '_hist' for co in cols[1:]]

给后面每一列都加上 _hist

复制代码
['A_hist', 'B_hist', 'C_hist']

④ 拼起来

复制代码
['card_id'] + ['A_hist', 'B_hist', 'C_hist']
→ ['card_id', 'A_hist', 'B_hist', 'C_hist']

相关推荐
bzmK1DTbd7 分钟前
Git版本控制:Java项目中的分支管理与合并策略
java·开发语言·git
Rust研习社16 分钟前
为什么 Rust 没有空指针?
开发语言·后端·rust
landyjzlai21 分钟前
蓝迪哥玩转Ai(8)---端侧AI:RK3588 端侧大语言模型(LLM)开发实战指南
人工智能·python
kyriewen1124 分钟前
WebAssembly:前端界的“外挂”,让C++代码在浏览器里跑起来
开发语言·前端·javascript·c++·单元测试·ecmascript
我叫黑大帅2 小时前
如何通过 Python 实现招聘平台自动投递
后端·python·面试
其实防守也摸鱼2 小时前
CTF密码学综合教学指南--第九章
开发语言·网络·python·安全·网络安全·密码学·ctf
砚底藏山河2 小时前
Python量化开发:2026最佳实时股票数据API接口推荐与对比
开发语言·windows·python
AlunYegeer3 小时前
JAVA,以后端的视角理解前端。在全栈的路上迈出第一步。
java·开发语言·前端
研究点啥好呢3 小时前
专为求职者开发的“面馆”!!!摆脱面试焦虑!!!
python·面试·开源·reactjs·求职招聘·fastapi
hixiong1234 小时前
C# OpenvinoSharp使用DINOv2模型进行图像相似度计算
开发语言·c#