Python Pandas DataFrame 数据查询、修改与删除详解
本文详细介绍 Python Pandas 库中 DataFrame 的核心操作。涵盖通过 index 和 columns 获取索引,利用 []、loc、iloc、at、iat 进行元素查询;使用 rename 修改行列索引,通过指定位置赋值修改元素值;以及利用 drop 方法按标签或轴删除行与列,并解析各方法的参数与注意事项。
一、查询操作
可以通过访问 DataFrame 对象的 index 属性和 columns 属性,分别获取行索引和列索引的信息。
import pandas as pd
data = {"name": ["Alice", "Bob", "Cindy", "David"], "age": [25, 23, 28, 24], "gender": ["woman", "man", "woman", "man"]}
df = pd.DataFrame(data)
print(df.index)
print(df.columns)
df
执行上述代码后的输出结果如下:

元素的查询
针对 DataFrame 元素的查询,主要支持以下几种方式:使用方括号 [] 切片、loc 方法、iloc 方法、at 方法以及 iat 方法。下文将逐一介绍这些方法的具体用法。
使用 [] 切片:
与 Series 类似,DataFrame 同样支持使用 [] 进行切片操作。其使用逻辑相近,即通过指定行或列的下标(整数)或名称(字符串)来定位并查询特定位置的元素。
例如:
# 获取第0行数据
df[0:1]
# 获取第2-4行数据(不包括4)
df[2:4]
# 获取某一列
df.name # df["name"]
# 获取某几列
df[["name", "gender"]]
# 获取指定行指定列
df[2:4][["name", "gender"]]利用 loc 方法和 iloc 方法:
其中,loc 方法以行索引的名称和列索引的名称作为参数进行选取;而 iloc 方法则以行索引的位置序号和列索引的位置序号作为参数。具体的使用示例如下:
# 获取某行
df.loc[1]
df.iloc[1]
# 获取多行
df.loc[1:3]
df.iloc[1:3]
# 获取某列
df.loc[:, "name"]
df.iloc[:, 0]
# 获取多列
df.loc[:, ["name","gender"]]
df.iloc[:, [0,2]]需要特别注意的一点是,当使用 loc 方法且行索引参数为区间时,该区间为前后闭区间(包含首尾);而使用 iloc 方法时,区间为前闭后开区间(包含开头,不包含结尾)。
通过 at 方法和 iat 方法:
at 和 iat 的使用逻辑与 loc 和 iloc 相似,但区别在于它们仅能访问单个标量元素,无法直接访问多个元素。其优势在于查询速度通常比 loc 和 iloc 更快。具体用法如下:
# 查询index为0列名为name的元素
df.at[0, "name"]
# 查询第2行第1列的元素
df.iat[2,1]介绍完 DataFrame 的查询操作后,接下来本文将重点介绍 DataFrame 数据的修改及删除操作。
二、修改操作
行列索引的修改
DataFrame 对象提供了 rename() 方法用于修改行索引或列索引。该方法默认修改行索引,若需修改列索引,可通过指定 columns 参数来实现。
具体使用方法如下:

# 修改指定行索引
df.rename({1:"one", 2:"two"}, inplace=True)
# 修改指定列索引
df.rename(columns={"city": "address"}, inplace=True)
df运行结果输出如下:

参数 inplace=True 表示直接在原始的 DataFrame 对象上进行修改,而不返回新的副本。
元素值的修改
在前述查询操作中,我们提到可以通过 loc、iloc、at、iat 等方法获取指定位置的值。修改元素值的逻辑与此类似,即先通过上述方法定位到目标位置,然后进行赋值操作即可完成修改。例如:
# 修改1-2行age和city列的数据
df.loc[1:2, ["age","city"]] = [["22", "北京"],["21", "济南"]]
# 修改gender列 man-->男
df.loc[df["gender"]=="man", "gender"] = "男"
df输出结果如下:

三、行和列的删除操作
DataFrame 提供了 drop() 方法来进行行或列的删除操作。
该方法的用法及参数说明如下:
df.drop(labels=None, axis=0, index=None, columns=None, inplace=False)- labels:指定要删除的行标签或列标签,可以传入列表以指定多个行或列索引。
- axis:取值为 0 或 1,分别代表行和列。默认值为 0,表示删除行;若设置为 1,则表示删除列。
- index:直接指定要删除的行标签,可传入列表指定多个行索引。
- columns:直接指定要删除的列标签,同样可传入列表指定多个列索引。
- inplace:默认为 False,若设置为 True,则表示在原始的 DataFrame 上进行修改,不返回新对象。
通过以下代码示例进行演示:
# 删除单行
df.drop(4, inplace=True)
# 删除多行
df.drop([1,3], inplace=True)
# 删除多列
df.drop(["gender","city"], axis=1, inplace=True) # 或 df.drop(columns=["genger","city"], inplace=True)
df至此,关于 Python 数据分析中 Pandas DataFrame 的修改、删除及查询操作的介绍已完成。如需了解更多相关 Pandas DataFrame 内容,欢迎查阅本站往期文章或继续浏览后续教程,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









