在Python中,实现DataFrame纵向拼接可以使用`pandas`库的`concat`函数。下面为你详细介绍具体的实现方法。
### 使用`concat`函数进行纵向拼接
`concat`函数可以将多个DataFrame对象沿着指定的轴进行拼接,当`axis=0`时表示纵向拼接。示例代码如下:
```python
import pandas as pd
# 创建示例DataFrame
df1 = pd.DataFrame([['Tom', '2001', 98],
['Jack', '2002', 63],
['Lucy', '2003', 88],
['Nick', '2004', 100]],
columns=['姓名', '学号', '成绩'])
df2 = pd.DataFrame([['Tom', '2001', '一班'],
['Jack', '2002', '二班'],
['Lucy', '2003', '二班'],
['Anny', '2005', '一班']],
columns=['姓名', '学号', '班级'])
# 纵向拼接DataFrame
result = pd.concat([df1, df2], axis=0)
print(result)
```
在上述代码中,首先创建了两个DataFrame对象`df1`和`df2`,然后使用`pd.concat`函数将它们纵向拼接在一起,最后将拼接结果存储在`result`变量中并打印输出。
### 使用高阶函数`reduce`进行纵向连接
若要将一个列表中的DataFrame进行纵向连接,可以使用高阶函数`reduce`。示例代码如下:
```python
import pandas as pd
from functools import reduce
def concat_func(x, y):
return pd.concat([x, y], axis=0) # axis=0为纵向连接
# 假设有一个DataFrame列表
metrics = [df1, df2]
data = reduce(concat_func, metrics)
print(data)
```
在这段代码中,定义了一个`concat_func`函数用于纵向拼接两个DataFrame,接着使用`reduce`函数将列表`metrics`中的所有DataFrame依次进行纵向拼接,最终得到拼接后的结果`data`。
### `concat`函数的参数说明
`concat`函数的完整语法为:
```python
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False)
```
- `objs`:需要拼接的DataFrame或Series对象的列表。
- `axis`:拼接的轴,`0`表示纵向拼接,`1`表示横向拼接,默认为`0`。
- `join`:拼接方式,`'outer'`表示取并集,`'inner'`表示取交集,默认为`'outer'`。
- `ignore_index`:是否忽略原索引,若为`True`,则会重新生成索引,默认为`False`。