📌  相关文章
📜  'DataFrame' 对象没有属性'reshape' (1)

📅  最后修改于: 2023-12-03 15:13:02.524000             🧑  作者: Mango

'DataFrame' 对象没有属性 'reshape'

当使用 Pandas 库中的 DataFrame 对象时,您可能会遇到这个错误:“DataFrame' 对象没有属性 'reshape'”。 具体来说,reshape() 函数是 NumPy 库中的函数,而不是 Pandas 库中 DataFrame 对象的函数。

NumPy 的 reshape 函数

reshape() 函数是 NumPy 库中的函数,允许您更改数组的形状。 NumPy 数组是多维的,因此 reshape() 函数允许您在不改变数组数据的情况下更改其形状。 要使用reshape()函数,您可以按照以下步骤进行操作:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
reshaped_arr = np.reshape(arr, (2, 6))
print(reshaped_arr)

该示例将一个 1 行 12 列的数组更改为一个 2 行 6 列的数组:

array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])
解决问题

将 reshape() 函数应用于 Pandas DataFrame 对象会导致错误,因为 DataFrame 对象没有名为 reshape() 的函数。

如果您想像使用 NumPy 并将其结果转换为 Pandas DataFrame,可以使用 .reshape() 而不是 DataFrame 对象的函数。以下是一个示例:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([[1,2,3], [4,5,6], [7,8,9]]), columns=['a', 'b', 'c'])

reshaped_arr = np.reshape(df.values, (3, 3))

new_df = pd.DataFrame(reshaped_arr, columns=['a', 'b', 'c'])
print(new_df)

该程序先将 DataFrame 转换为 NumPy 数组,并使用 reshape() 将其更改为新形状。 然后,使用转换后的数组创建新的 DataFrame。

     a    b    c
0  1.0  2.0  3.0
1  4.0  5.0  6.0
2  7.0  8.0  9.0

如此即可解决该错误。

在编写代码时,始终要注意您正在使用的库和函数,并确保正确使用它们。