python numpy中array与pandas的DataFrame转换方式

  • Post category:Python

在Python中,Numpy和Pandas是两个非常常用的数据处理库。Numpy中的array是一种多维数组,而Pandas中的DataFrame是一种二维表格数据结构。在数据处理过程中,我们可能需要将Numpy中的array转换为Pandas中的DataFrame,或者将Pandas中的DataFrame转换为Numpy中的array。本文将详细介绍如何进行这两种转换。

Numpy中的array转换为Pandas中的DataFrame

在Numpy中,我们可以使用array函数创建一个多维数组。下面是一个示例,演示如何将Numpy中的array转换为Pandas中的DataFrame。

import numpy as np
import pandas as pd

# 创建一个多维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 将多维数组转换为DataFrame
df = pd.DataFrame(arr)

print(df)

在上面的示例中,我们创建了一个多维数组arr,然后使用pd.DataFrame函数将其转换为DataFrame。输出结果如下:

   0  1  2
0  1  2  3
1  4  5  6
2  7  8  9

需要注意的是,当我们将Numpy中的array转换为Pandas中的DataFrame时,DataFrame的列名和行名默认为0、1、2……等数字。如果需要自定义列名和行名,可以在创建DataFrame时指定columns和index参数。下面是一个示例,演示如何自定义列名和行名。

import numpy as np
import pandas as pd

# 创建一个多维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 将多维数组转换为DataFrame,并自定义列名和行名
df = pd.DataFrame(arr, columns=['A', 'B', 'C'], index=['X', 'Y', 'Z'])

print(df)

在上面的示例中,我们创建了一个多维数组arr,然后使用pd.DataFrame函数将其转换为DataFrame,并自定义了列名和行名。输出结果如下:

   A  B  C
X  1  2  3
Y  4  5  6
Z  7  8  9

Pandas中的DataFrame转换为Numpy中的array

在Pandas中,我们可以使用DataFrame函数创建一个二维表格数据结构。下面是一个示例,演示如何将Pandas中的DataFrame转换为Numpy中的array。

import numpy as np
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})

# 将DataFrame转换为array
arr = np.array(df)

print(arr)

在上面的示例中,我们创建了一个DataFrame df,然后使用np.array函数将其转换为array。输出结果如下:

[[1 4 7]
 [2 5 8]
 [3 6 9]]

需要注意的是,当我们Pandas中的DataFrame转换为Numpy中的array时,array的行名和列名会被忽略。如果需要保留行名和列名,可以使用DataFrame中的values属性。下面是一个示例,演示如何保留行名和列名。

import as np
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})

# 将DataFrame转换为array,并保留行名和列名
arr = df.values

print(arr)

上面的示例中,我们创建了一个DataFrame df,然后使用values属性将其转换为array,并保留了行名和列名。输出结果如下:

[[1 4 7]
 [2 5 8]
 [3 6 9]]

需要注意的是,当我们将Pandas中的DataFrame转换为Numpy中的array时,如果DataFrame中的数据类型不一致,转换后的array的数据类型会被强制转换为一致的数据类型。如果需要保留不同的数据类型,可以使用DataFrame中的to_records方法。下面是一个示例,演示如何保留不同的数据类型。

import numpy as np
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4.0, 5.0, 6.0], 'C': ['a', 'b', 'c']})

# 将DataFrame转换为array保留不同的数据类型
arr = np.array(df.to_records())

print(arr)

在上面的示例中,我们创建了一个DataFrame df,其中包含了整型、浮点型和字符串类型的数据。然后使用to_records方法将其转换为array,并保留了不同的数据类型。输出结果如下:

[(0, 1, 4., 'a') (1, 2, 5., 'b') (2, 3, 6., 'c')]

在这两个示例中,我们分别演示了如何将Numpy中的array转换为Pandas中的DataFrame,以及如何将Pandas中的DataFrame转换为Numpy中的array。需要注意的是,在进行转换时,我们需要注意数据类型的一致性和行列名的保留。