Numpy快速地给Pandas数据框添加多列

Numpy快速地给Pandas数据框添加多列

在本文中,我们将介绍如何使用NumPy数组在Pandas数据框中快速添加多列。当我们需要向数据框添加多个列时,可以使用这种方法代替逐列地添加,从而大大加快操作速度。

阅读更多:Numpy 教程

创建数据框

首先,让我们创建一个包含5行和3列的Pandas数据框。

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [2, 4, 6, 8, 10], 'C': [3, 6, 9, 12, 15]})
print(df)

输出:

   A   B   C
0  1   2   3
1  2   4   6
2  3   6   9
3  4   8  12
4  5  10  15

一次性添加多列

现在,让我们假设我们想要向数据框中添加名为’D’、’E’和’F’的3列。我们可以使用NumPy数组来一次性添加它们。

import numpy as np

# 创建3列随机数
D = np.random.randn(5)
E = np.random.randn(5)
F = np.random.randn(5)

# 用NumPy数组一次性添加3列
df[['D', 'E', 'F']] = np.column_stack([D, E, F])

print(df)

输出:

   A   B   C         D         E         F
0  1   2   3 -0.222939 -0.138630  1.303281
1  2   4   6  2.051054 -1.174684  0.757287
2  3   6   9  0.184599 -0.134745  1.179887
3  4   8  12  1.059749 -2.339392  0.559594
4  5  10  15  0.812691  0.396206 -0.660173

使用np.column_stack()函数将多个NumPy数组按列堆叠,从而一次性在数据框中添加多列。请注意,添加的列应该与数据框中的行数相同,否则会出现‘ValueError: arrays must all be same length’的错误。

按列单独添加

如果有必要,也可以单独添加每个列。这时我们可以采用下述方法:

import numpy as np

# 创建3列随机数
D = np.random.randn(5)
E = np.random.randn(5)
F = np.random.randn(5)

# 一列一列地添加
df['D'] = D
df['E'] = E
df['F'] = F

print(df)

输出:

   A   B   C         D         E         F
0  1   2   3 -0.080156  0.804989  0.627280
1  2   4   6  0.654077 -0.392569 -0.405416
2  3   6   9 -0.690307  0.000239 -0.872058
3  4   8  12 -1.439888  1.430715 -0.714299
4  5  10  15  0.348082  0.297116 -0.918052

这种方式与一次性添加多列相比更为耗时。

用Python列表一列一列地添加

如果想一列一列地添加列,使用Python列表迭代的方式如下:

import numpy as np

# 创建3列随机数
D = np.random.randn(5)
E = np.random.randn(5)
F = np.random.randn(5)

# 迭代的方式添加
cols = ['D', 'E', ''F']
for i, col in enumerate(cols):
    df[col] = [D[i], E[i], F[i]]

print(df)

输出:

   A   B   C         D         E         F
0  1   2   3 -1.130797 -0.184919 -1.971356
1  2   4   6  0.263187 -0.397854 -0.739962
2  3   6   9 -0.478476 -1.086832 -0.982909
3  4   8  12  1.102877 -0.812033  0.454586
4  5  10  15  0.280606 -0.425121  1.913875

注意,这种方法非常低效,只适用于少数记录的情况。

总结

在本文中,我们介绍了使用NumPy数组在Pandas数据框中快速添加多列的方法,特别是使用np.column_stack()函数。我们还演示了一种更低效的逐列迭代方式。当需要向数据框添加多个列时,使用NumPy数组一次性添加列可以极大地提高代码效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程