如何按行位置而非行标签获取DataFrame中指定行的数据
按行位置取DataFrame指定行数据的解决方案
你需要用到pandas专门用于整数位置索引的iloc索引器,它完全基于行的先后顺序取值,和行标签本身的取值无关,正好可以避免你担心的误取行标签匹配值的问题。
单组位置取值示例
假设你的位置列表为pos_list = [43,579,100],第二个DataFrame命名为df2,需要提取的目标列名为target_col,获取结果列表的代码如下:
# 取指定列对应位置的数值,转换为列表 selected_list = df2.iloc[pos_list, df2.columns.get_loc('target_col')].tolist() # 如果需要提取整行数据,转换为嵌套列表可以用如下写法 # selected_rows = df2.iloc[pos_list].values.tolist()
嵌套位置列表批量处理示例
如果你存储最小值行位置的是嵌套列表,需要批量处理所有列的对应取值,可以用循环实现:
# 嵌套位置列表示例:每个子列表对应原DataFrame一列的最小值行位置 nested_pos = [[43, 120], [579, 32], [100, 890]] target_col = "你要取值的列名" col_index = df2.columns.get_loc(target_col) result = [] for pos_group in nested_pos: group_vals = df2.iloc[pos_group, col_index].tolist() result.append(group_vals)
iloc的取值逻辑完全按照DataFrame展示的行顺序从0开始计数,无论你的行标签是乱序、非连续还是其他类型,都不会出现匹配错误的问题。
内容的提问来源于stack exchange,提问作者Regina Briseño
相关产品推荐
相关产品推荐

