科普: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']

相关推荐
进击的明明11 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿12 小时前
Python实战第8期:函数
后端·python·编程语言
卷无止境13 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境16 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
WJ.Polar17 小时前
Java封装、继承、多态
java·开发语言
摇滚侠17 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
滴啦嘟啦哒18 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
weixin_3077791318 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
全栈练习生18 小时前
AI安全与红队测试
python·ai
爱读书的小胖18 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言