Numpy:如何将np.array添加为pandas.DataFrame的一列
在本文中,我们将介绍如何使用NumPy将一个ndarray对象作为Pandas DataFrame的一个新列添加到DataFrame中。Pandas和NumPy的交互非常流畅,两者之间有着很少的数据转换和类型兼容的问题。因此,我们可以轻松地使用NumPy的数组和Pandas DataFrame进行数据操作。
阅读更多:Numpy 教程
创建DataFrame对象
首先,我们需要创建一个Pandas DataFrame对象并填充一些随机数据。这可以通过调用DataFrame方法并传递字典对象完成。字典的键将成为DataFrame的列名,而值将成为DataFrame的列。接下来,我们将演示如何使用此方法创建一个Pandas DataFrame并将其打印出来。
import pandas as pd
import numpy as np
data = {'A': np.random.rand(5),
'B': np.random.rand(5),
'C': np.random.rand(5)}
df = pd.DataFrame(data)
print(df)
输出结果如下:
A B C
0 0.599114 0.822046 0.238260
1 0.697766 0.902594 0.294113
2 0.963745 0.109939 0.065341
3 0.383258 0.038173 0.754521
4 0.719040 0.632273 0.691273
将np.array添加为DataFrame的一列
现在,我们将演示如何将NumPy ndarray对象添加为Pandas DataFrame的新列。此方法可以通过在DataFrame中创建一列并使其等于ndarray来实现。我们将提供示例代码,演示如何添加一个新的名为“D”的数组列,列数据为随机数。
data_d = np.random.rand(5)
df['D'] = data_d
print(df)
此时,DataFrame将新增一个列D,列数据为data_d。
输出结果如下:
A B C D
0 0.599114 0.822046 0.238260 0.808840
1 0.697766 0.902594 0.294113 0.131682
2 0.963745 0.109939 0.065341 0.236316
3 0.383258 0.038173 0.754521 0.128376
4 0.719040 0.632273 0.691273 0.394004
我们还可以使用np.random.normal()函数创建一个正态分布的数组ndarray,然后将其添加为DataFrame的新列。
示例代码如下:
data_e = np.random.normal(0,1,5)
df['E'] = data_e
print(df)
此时,DataFrame将新增一个列E,列数据为data_e。
输出结果如下:
A B C D E
0 0.599114 0.822046 0.238260 0.808840 -0.360512
1 0.697766 0.902594 0.294113 0.131682 -1.959591
2 0.963745 0.109939 0.065341 0.236316 0.476632
3 0.383258 0.038173 0.754521 0.128376 -1.063404
4 0.719040 0.632273 0.691273 0.394004 -0.109156
使用np.c_和np.r_将ndarray添加为DataFrame的新列
NumPy中的np.c_和np.r_函数允许将两个ndarray对象组合成一个对象。这些函数可用于将ndarray作为Pandas DataFrame的新列添加到DataFrame中。
- 使用np.r_在DataFrame的顶部添加ndarray
np.r_函数可用于将ndarray添加到DataFrame的顶部。它要求两个ndarray对象的行数相同,列数可以不同。示例代码如下,其中我们将一个新数组作为DataFrame的第一列。
data_f = np.random.randint(0, 10, size=(5, 1))
df = pd.concat([pd.DataFrame(data_f), df], axis=1)
print(df)
此时,DataFrame将新增一个列F,列数据为data_f。
输出结果如下:
0 A B C D E
0 6 0.599114 0.822046 0.238260 0.808840 -0.360512
1 3 0.697766 0.902594 0.294113 0.131682 -1.959591
2 7 0.963745 0.109939 0.065341 0.236316 0.476632
3 4 0.383258 0.038173 0.754521 0.128376 -1.063404
4 8 0.719040 0.632273 0.691273 0.394004 -0.109156
- 使用np.c_在DataFrame的末尾添加ndarray
np.c_函数可用于将ndarray添加到DataFrame的末尾。它要求两个ndarray对象的列数相同,行数可以不同。示例代码如下,其中我们将一个新数组作为DataFrame的最后一列。
data_g = np.random.randint(0, 10, size=(5, 1))
df = pd.concat([df, pd.DataFrame(data_g)], axis=1)
print(df)
此时,DataFrame将新增一个列G,列数据为data_g。
输出结果如下:
0 A B C D E 0
0 6 0.599114 0.822046 0.238260 0.808840 -0.360512 6
1 3 0.697766 0.902594 0.294113 0.131682 -1.959591 4
2 7 0.963745 0.109939 0.065341 0.236316 0.476632 0
3 4 0.383258 0.038173 0.754521 0.128376 -1.063404 1
4 8 0.719040 0.632273 0.691273 0.394004 -0.109156 0
删除ndarray
如果需要删除添加的ndarray,可以使用DataFrame的drop()方法。示例代码如下,我们将删除列D。
df = df.drop(['D'], axis=1)
print(df)
输出结果如下:
0 A B C E 0
0 6 0.599114 0.822046 0.238260 -0.360512 6
1 3 0.697766 0.902594 0.294113 -1.959591 4
2 7 0.963745 0.109939 0.065341 0.476632 0
3 4 0.383258 0.038173 0.754521 -1.063404 1
4 8 0.719040 0.632273 0.691273 -0.109156 0
总结
在本文中,我们介绍了如何使用NumPy将ndarray对象添加为Pandas DataFrame的新列,并演示了几个添加新列的示例。我们还介绍了如何使用np.r_和np.c_函数将ndarray添加到DataFrame的顶部和底部。另外,如果需要删除添加的列,可以使用DataFrame的drop()方法。通过这些示例,读者可以更好地理解如何使用NumPy进行数据操作,并以不同的方式将ndarray添加到Pandas DataFrame中。这些基本操作将有助于您更好地使用Pandas和NumPy进行数据处理和数据分析。