Python pandas如何通过起止标识不硬编码选取指定行列数据
Pandas指定起止标识提取行范围数据方案
实现逻辑
- 不硬编码固定行号写死提取规则,通过配置起止位置或起止标识值做切片,后续调整提取范围只需要修改对应参数即可,维护成本更低
- 利用pandas标签切片特性匹配首尾标识,保留
Name、Score两列生成独立的新DataFrame
实现代码
import pandas as pd name_dict = { 'Name': ['a','b','c','d', 'e'], 'Score': ['0.90(subject to approval)',80,95,20,10] } df = pd.DataFrame(name_dict) # 提取范围参数,后续调整范围只改这里就行 start_pos = 1 end_pos = 3 # 也可以直接指定起止标识值,比如 start_flag = 'b'、end_flag = 'd' # 从对应位置匹配Name列的标识值 start_flag = df.loc[start_pos, 'Name'] end_flag = df.loc[end_pos, 'Name'] # 切片提取目标范围数据,保留需要的两列 new_df = df.set_index('Name').loc[start_flag:end_flag, ['Score']].reset_index() print("提取得到的新DataFrame:") print(new_df)
运行输出
提取得到的新DataFrame: Name Score 0 b 80 1 c 95 2 d 20
注意事项
.loc的标签切片规则是首尾边界都包含,和位置切片iloc的左闭右开规则不同,使用时注意边界匹配。如果不想改动DataFrame索引,也可以用布尔索引实现相同效果:new_df = df[(df['Name'] >= start_flag) & (df['Name'] <= end_flag)][['Name', 'Score']]
内容的提问来源于stack exchange,提问作者AK007
相关产品推荐
相关产品推荐

