邪修・【在WPS里学Python】丨0.5:DataFrame进阶:字段名、索引、用“列名”拿数据

Lv.2潜力创作者
| 📢 | 🎉 到这一章,我们彻底弄清楚DataFrame中如何取数, 因为如果这里没搞懂—— 👉 后面 for、清洗、分析,全都会卡住 |
❓ 做过数据工作的应该都懂,字段一多,用坐标获取数据特别麻烦(在表格中使用xlookup,寻找返回数组列;用sumif寻找条件列......)
📊 举个真实场景
👉 你如果用坐标获取ROI的数据:
数据.iloc[0,3]
👉 你脑子里要想,要去找:
ROI是第几列?
第4列 → index=3
😵 如果列变成10个、20个、50个?
👉 手动数Excel列。
❌ 坐标的本质问题
👉 难找(字段一多,很难找到想要的列)
👉 易错(列顺序一变,全错)
👉 难维护(别人看不懂)
✅ 正确思维:用字段名
👉 在表格里你怎么想?
👉 “我要ROI”
👉 在Python里直接这样写:
数据["ROI"][0]
❗但这里有个坑
👉 上面这行代码:
👉 ❌ 默认是不能用的!
😱 为什么不能用?
👉 因为你现在写的是:
xl()
👉 实际结构是:
👉 注意:
👉 列名是:0 / 1 / 2 / 3
👉 “ROI”只是数据!
👉 Python不会自动识别“表头”
👉 在它眼里:
👉 第一行 ≠ 字段名
👉 第一行 = 普通数据
🔥 那怎样可以用字段名?
👉 只有你这样写:
xl("A1:D2", headers=True)
👉 结构变成:
👉 这时候才可以:
数据["ROI"][0]
👉 ✔️ 正常返回:2
🧠 再对比一下两种写法:
写法 本质
xl() 没有字段名
xl(..., header=True) 有字段名
👉 差的不是语法
👉 差的是:你有没有定义数据结构
❓ 新手常见问题:为什么 xl()[1][0] 和 iloc[1,0] 不一样?
📊 看代码
write_xl([["渠道","H5"],["数量",1000]],"A1")
print(xl()[1][0])
print(xl().iloc[1,0])
😱 输出
xl()[1][0] → H5(B1)
xl().iloc[1,0] → 数量(A2)
💥 为什么会这样?
👉 因为这是两种不同的方法,逻辑完全不同!
🔍 拆解 xl()[1][0]
xl()[1][0]
👉 实际执行:
第一步
xl()[1]
👉 ❗不是第2行!
👉 👉 是第2列!
👉 得到:
第二步
[0]
👉 从这列取第1个值 → H5
👉 得到:
🔍 再看 iloc[1,0]
xl().iloc[1,0]
👉 标准坐标:
👉 第2行,第1列 → 数量
👉 得到:
🧠 本质区别总结
写法 | 含义 | 一句话记住区别 |
xl()[1][0] | 先取列,再取行 | 先取B列,再取第1行 |
iloc[1,0] | 同时定位行列 | 直接拿A2 |
😎 建议咱们一定要常用print()
每次调整代码一点点,然后print一下,观察结果的变化,能够更容易明白函数方法的作用和区别。
| 📌 | ✅ 你已经搞懂: • 为什么不用坐标(太反人类) • 为什么字段名才是核心 • xl()中headers=True 参数的作用 • xl()[1][0] 和 iloc[1,0] 的区别 |
📸 大家多多用print去理解结果的变化,会学得超快哦~
