本文介绍了在Python的数据分析库Pandas中如何有效地删除或添加数据帧中的行与列,帮助读者掌握数据操作技巧。
### pandas删除行、删除列、增加行、增加列的实现
#### 1. 删除行
在Pandas中,可以通过多种方式删除数据帧中的行。主要包括`drop`函数和基于筛选条件的方法。
##### 1.1 使用`drop`函数
- **通过行名称删除**:
```python
df = df.drop([1, 2])
```
或者使用`inplace=True`直接修改原数据帧:
```python
df.drop([1, 3], inplace=True)
```
- **通过行号删除**:
- 删除第一行:
```python
df.drop(df.index[0], inplace=True)
```
- 删除前三行:
```python
df.drop(df.index[0:3], inplace=True)
```
- 删除第1行和第3行:
```python
df.drop(df.index[[0, 2]], inplace=True)
```
##### 1.2 通过筛选方法实现删除行
- **示例**: 对某行数据去重:
```python
df.loc[2, B] = 9
chooses = df[B].drop_duplicates().index
df = df.loc[chooses]
```
#### 2. 删除列
删除列的方式包括`del`关键字、`drop`函数以及通过筛选条件的方法。
##### 2.1 使用`del`关键字
```python
del df[A]
```
##### 2.2 使用`drop`函数
- **通过列名称删除**:
```python
df = df.drop([B, C], axis=1)
df.drop([B, C], axis=1, inplace=True)
```
- **使用列数删除**:
- 删除第一列:
```python
df.drop(df.columns[0], axis=1, inplace=True)
```
- 删除前三列:
```python
df.drop(df.columns[0:3], axis=1, inplace=True)
```
- 删除第1列和第3列:
```python
df.drop(df.columns[[0, 2]], axis=1, inplace=True)
```
##### 2.3 通过筛选方法实现删除列
类似于删除行的方法,可以通过筛选条件实现删除列的操作。
#### 3. 增加行
增加行的方式包括使用`loc`、`at`、`set_value`方法,以及逐行添加和插入数据帧中的特定位置等操作。
##### 3.1 使用`loc`、`at`、 `set_value`
- **使用`loc`增加行**:
```python
df.loc[5] = [16, 17, 18, 19]
```
- **使用`at`增加行**:
```python
df.at[5] = [16, 17, 18, 19]
```
- **使用`set_value`增加行**:
```python
df.set_value(5, df.columns, [16, 17, 18, 19], takeable=False)
```
##### 3.2 使用 `append` 函数
- **添加有name的Series**:
```python
s = pd.Series([16, 17, 18, 19], index=df.columns, name=5)
df = df.append(s)
```
- **添加没有name的Series**:
```python
s = pd.Series([16, 17, 18, 19], index=df.columns)
df = df.append(s, ignore_index=True)
```
- **添加字典列表**:
```python
ls = [{A: 16, B: 17, C: 18, D: 19}, {A: 20, B: 21, C: 22, D: 23}]
df = df.append(ls, ignore_index=True)
```
##### 3.3 使用逐行增加
- **简单逐行添加内容**:
```python
df.loc[len(df)] = [16, 17, 18, 19]
```
需要注意,如果生成的索引已经存在于`df`中,则会覆盖原有数据,而不是新增行。
##### 3.4 插入特定位置
通过这些方法可以灵活地管理Pandas中的DataFrame,并实现对数据的有效操作和管理。