如何使用Pandas的loc从指定列开始切片行?及Excel行读取范围调整
嘿,我来帮你搞定这两个问题,一步步说清楚:
技术问题:如何用Pandas的loc实现从指定列开始对行切片?
Pandas的loc是基于标签的索引工具,要实现从指定列开始切片行,只需要在loc中同时指定目标行和列的范围即可,核心语法很简单:
df.loc[行标签/行标签列表/行切片, 起始列标签:]
给你几个实用场景的例子:
- 选索引为3和11的两行,从D列(标签为'D')开始的所有列:
df.loc[[3, 11], 'D':] - 选从第0行到第10行的所有行,从名为"销售额"的列开始:
df.loc[0:10, '销售额':] - 如果你的列是数值索引(比如读取Excel时没指定表头,列用0、1、2...表示),D列对应索引3(A=0,B=1,C=2,D=3),写法就是:
df.loc[[3, 11], 3:]
关键要记住:loc里的列范围起始列:会自动包含从起始列到DataFrame最后一列的所有内容,灵活度拉满。
代码优化需求:读取指定行从D列开始的Excel数据
针对你的需求,直接给你优化后的代码,同时解释每个步骤的作用:
import pandas as pd # 用原始字符串定义文件路径,避免Windows路径的转义坑 file_path = r"G:\Data\Hotels\ABZPD - Daily Strategy Tool.xlsm" # 读取「CRM View」工作表,header参数根据你的实际表头位置调整: # 你提到第5行对应Pandas索引3,说明前面有3行是表头/说明行,所以设置header=3(让第4行成为表头,第5行开始是数据行,索引从0开始) df = pd.read_excel(file_path, sheet_name="CRM View", header=3) # 用loc筛选目标行和列:索引3、11的行,从D列开始到最后一列 # 这里假设D列的表头标签是'D',如果不是,你可以先打印df.columns查看实际列名,替换掉'D'就行 filtered_data = df.loc[[3, 11], 'D':] # 如果你的列是数值索引(没有表头),就换成下面这行: # filtered_data = df.loc[[3, 11], 3:]
额外小技巧:
如果你的Excel文件特别大,不想加载整个表,可以结合usecols参数只读取D列及以后的列,再筛选行,能提升不少效率:
# 读取时只加载D列及以后的列 df = pd.read_excel(file_path, sheet_name="CRM View", header=3, usecols="D:") # 再筛选目标行 filtered_data = df.loc[[3, 11]]
内容的提问来源于stack exchange,提问作者Sorath
相关产品推荐
相关产品推荐

