pandas如何正确读取DataFrame指定列的指定行数据
pandas读取指定列指定行范围数据实现方案
问题背景
现有示例DataFrame结构如下:
A B C D 0 ravi priya sonue John 1 priya sonue ravi john 2 john ravi priya sonue 3 sonue john priya ravi
需求为获取B列中索引0到2的行数据,此前使用df.iloc[0, 2]无法得到预期结果,期望输出格式如下(注:示例中sone为笔误,对应原数据值为sonue):
B priya sonue ravi
错误原因说明
iloc的参数规则为df.iloc[行选择范围, 列选择范围],此前写的df.iloc[0,2]实际是取「行索引为0、列位置索引为2(即C列)」的单个单元格值,和需求的行列范围完全不匹配。
可行实现代码
方法1:先选列再切片行(可读性最高)
如果需要保留B列的列名、返回DataFrame格式和预期输出对齐,使用双括号选中B列,再对行做0-3的切片(pandas位置切片为左闭右开规则,写0:3即可覆盖索引0、1、2三行):
# 选中B列,截取索引0-2共3行 result = df[['B']].iloc[0:3]
方法2:iloc同时指定行列范围
直接在iloc中同时写行、列的选择范围,注意原表B列的位置索引是1(列顺序从0开始计数:A=0、B=1、C=2、D=3),列范围写1:2即可保留DataFrame结构:
result = df.iloc[0:3, 1:2]
如果不需要保留带列名的DataFrame结构,只需要拿到B列对应3个值的Series序列,可以简化写法为:
result = df['B'].iloc[0:3]
运行上述代码后,得到的输出和预期完全一致:
B 0 priya 1 sonue 2 ravi
内容的提问来源于stack exchange,提问作者vipin sharma
相关产品推荐
相关产品推荐

