如何打印含字典的列表指定索引?解决pandas RangeIndex不可调用错误
搞定Pandas索引那些坑!
嘿,我来帮你把这些问题逐个掰明白:
1. 为啥df_learn.index(2)会报错?
你可别搞混啦!df_learn.index是Pandas DataFrame的行索引属性,它是个RangeIndex对象,不是能调用的方法,自然不能加括号传参数~ 你要找的是列索引为2的Col3,和行索引完全不是一回事儿。
2. 怎么正确拿到索引为2的列(Col3)?
有两种简单的方式:
- 用
.iloc按位置精准定位:
df_learn.iloc[:, 2] # 前面的:代表取所有行,后面的2就是第3列(索引从0开始算哦)
- 要是你知道列名,直接用列名更直观:
df_learn['Col3']
3. 为啥df_learn[:1]能跑,但df_learn[2]不行?
这是Pandas方括号[]的“双重身份”搞的鬼:
- 当你传的是切片(比如
[:1]),它会按行索引来筛选行,[:1]就是取行索引0到1(不含1)的行,也就是第一行数据。 - 但你传单个值(比如
2)的时候,它会默认去匹配列名,你的DataFrame里根本没有叫“2”的列,自然就报KeyError啦!
如果要取行索引为2的行,得这么写:
df_learn.iloc[2] # 按位置取第3行 # 要是行索引是默认的连续数字,用.loc也可以 df_learn.loc[2]
4. 实际数据是含字典的列表,怎么打印指定索引的元素?
假设你的原始列表长这样:
data_list = [{'Col1':10, 'Col2':13}, {'Col1':20, 'Col2':23}, {'Col1':15, 'Col2':18}]
直接用列表的索引就搞定啦,和普通列表操作一样:
print(data_list[2]) # 直接输出第三个字典元素
要是已经转成DataFrame了,就还是用上面说的.iloc或.loc来取行/列就行。
内容的提问来源于stack exchange,提问作者Joehat
相关产品推荐
相关产品推荐

