如何选择DataFrame指定行与列并生成新DataFrame?
pandas按位置选取指定行列生成新DataFrame实现方法
核心用pandas的位置索引器iloc完成操作即可,注意pandas的位置计数规则是从0开始,不要数错序号:
- 需要选取的第2列、第4列,对应位置索引为1、3
- 需要选取的第1行、第6行,对应位置索引为0、5
完整代码示例
首先构造测试用的4列6行原始DataFrame方便复现:
import pandas as pd import numpy as np # 构造6行4列的测试DataFrame raw_df = pd.DataFrame( np.arange(24).reshape(6, 4), columns=["列1", "列2", "列3", "列4"] )
核心选取逻辑,iloc的第一个参数传入要选的行位置列表,第二个参数传入要选的列位置列表,返回结果就是全新的DataFrame:
# 选中对应行列生成新DataFrame new_df = raw_df.iloc[[0, 5], [1, 3]]
注意事项
- 不要用先选列再选行的链式索引写法(比如
raw_df[[1,3]].iloc[[0,5]]),这种写法容易触发SettingWithCopyWarning,后续修改新表时可能出现数据不同步的问题,一次性通过iloc指定行列是官方推荐的稳妥写法。 - 如果你要选取的是自定义标签名的行、列(不是按自然序号位置选),把
iloc替换为loc,方括号内直接传入对应的行标签、列标签组成的列表即可,不需要做0起始的位置换算。
举个例子:如果你的行索引是日期、列名是具体指标名,选2024-01-01、2024-01-06两行的销售额、利润率两列,写法就是
df.loc[["2024-01-01", "2024-01-06"], ["销售额", "利润率"]]
内容的提问来源于stack exchange,提问作者kantditlaverite
相关产品推荐
相关产品推荐

