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

不说话 ✘
不说话 ✘ Lv.2 潜力创作者KVP

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去理解结果的变化,会学得超快哦~

四川省
浏览 373
5
22
分享
22 +1
4
5 +1
全部评论 4
 
㊣
新手容易犯这个错误
·
回复
 
123
打卡
· 四川省
回复
 
ღ᭄ꦿ࿐听风.
打卡
·
回复
 
Kerr
打卡
· 四川省
1
回复