pandas—删除某行或某列数据

本文介绍了在pandas中如何删除DataFrame的行和列,主要涉及drop()函数和del关键字的使用。通过实例展示了删除指定列、删除第一行以及同时删除多行多列的方法,并强调了drop()的灵活性和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,创建一个DataFrame格式数据作为举例数据。

# 创建一个DataFrame格式数据
data = {'a': ['a0', 'a1', 'a2'],
        'b': ['b0', 'b1', 'b2'],
        'c': [i for i in range(3)],
        'd': 4}
df = pd.DataFrame(data)
print('举例数据情况:\n', df)

在这里插入图片描述
注:DataFrame是最常用的pandas对象,使用pandas读取数据文件后,数据就以DataFrame数据结构存储在内存中。

pandas数据行列删除,主要用到drop()和del函数,用法如下:
1、drop()函数
语法:
DataFrame.drop(labels,axis=0,level=None,inplace=False,errors=’raise’)

参数说明
labels接收string或array,代表要删除的行或列的标签(行名或列名)。无默认值
axis接收0或1,代表操作的轴(行或列)。默认为0,代表行;1为列。
level接收int或索引名,代表标签所在级别。默认为None
inplace接收布尔值,代表操作是否对原数据生效,默认为False
errorserrors='raise’会让程序在labels接收到没有的行名或者列名时抛出错误导致程序停止运行,errors='ignore’会忽略没有的行名或者列名,只对存在的行名或者列名进行操作。默认为‘errors=‘raise’’。

实例1:删除d列

df1 = df.drop(labels='d', axis=1)
print('删除d列前:\n', df)
print('删除d列后:\n', df1)

在这里插入图片描述
实例2:删除第一行

df2 = df.drop(labels=0)
print('删除前:\n', df)
print('删除列:\n', df2)

在这里插入图片描述
实例3:同时删除多行多列

df3 = df.drop(labels=['a', 'b'], axis=1) # 同时删除a,b列
df4 = df.drop(labels=range(2)) # 等价于df.drop(labels=[0,1])
print('删除前:\n', df)
print('删除多列(a,b):\n', df3)
print('删除多行(第1,2行):\n', df4)

在这里插入图片描述
注意:(1)、删除列的操作时,axis参数不可省,因为axis默认为0(行);
(2)、没有加入inplace参数,默认不会对原来数据进行修改,需要将结果赋值给新的变量。

2、del函数
语法:del df[‘列名’]
此操作会对原数据df进行删除,且一次只能删除一列。
正确用法:

del df['d']
print('原地删除d列后:\n', df)

在这里插入图片描述
错误用法:

del df[['a', 'b']]
print(df)

在这里插入图片描述
以上就是pandas删除某行某列数据的用法,drop()相对于del()来说,灵活性更高,更为实用。

—end—
【微信搜索【一位代码】即可关注我】

### 如何在 Pandas 中将某一行设置为 DataFrame 的索引 要在 Pandas 中将某一行设为 DataFrame 的索引,可以按照以下方法操作。假设有一个 CSV 文件被加载到一个 DataFrame 中,并希望将其特定的一行转换成新的索引。 #### 方法一:通过 `iloc` 提取目标行并重新赋值给名 可以通过 `DataFrame.iloc[]` 来提取指定行的数据,并将其赋值给 DataFrame 的 `.columns` 属性来实现这一功能[^1]: ```python import pandas as pd # 假设有如下数据框 df data = { 'A': [1, 2, 3], 'B': ['X', 'Y', 'Z'], 'C': [True, False, True] } df = pd.DataFrame(data) # 打印原始 DataFrame print("Original DataFrame:") print(df) # 使用 iloc 获取第0行作为新索引 new_columns = df.iloc[0].values.tolist() df.columns = new_columns # 删除原来的第0行 (可选) df = df[1:].reset_index(drop=True) # 打印修改后的 DataFrame print("\nModified DataFrame with first row as column index:") print(df) ``` 上述代码片段中,`df.iloc[0]` 被用来获取原 DataFrame 的第一行,并将其转化为表形式以便于重命名名称。之后删除了原本的第一行以保持数据一致性。 #### 方法二:利用 `set_axis()` 函数设定自定义索引 另一种方式是使用 `set_axis()` 方法直接替换现有的标签: ```python # 设定新的一行索引 df.set_axis(df.iloc[0], axis='columns', inplace=False) # 同样需要移除旧有的首行记录 df = df[1:] ``` 此法同样能达到预期效果但更加简洁明了一些[^2]。 需要注意的是,在执行这些变换之前最好确认所选取的那行确实适合作为新的头部信息;另外当遇到类似 “ValueError: cannot set a row with mismatched columns” 错误提示时,则可能是因为尝试设置的新数与现有数据不匹配所致,此时应检查源数据结构是否一致者采取适当措施如填充缺失值等处理后再继续操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一位代码

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值