热线电话:13121318867

登录
2019-03-14 阅读量: 968
使用pandas为什么`DataFrame(foo)

从示例开始......

In [1]: import pandas as pd

In [2]: from sklearn.datasets import load_iris

In [3]: iris = load_iris()

In [4]: X = pd.DataFrame(data=iris.data, columns=iris.feature_names)

In [5]: output_df = pd.DataFrame(X)

In [6]: X is output_df

Out[6]: False

In [7]: list(X.columns)

Out[7]:

['sepal length (cm)',

'sepal width (cm)',

'petal length (cm)',

'petal width (cm)']

In [8]: output_df['y'] = iris.target

In [9]: list(X.columns)

Out[9]:

['sepal length (cm)',

'sepal width (cm)',

'petal length (cm)',

'petal width (cm)',

'y']

[6]说X is output_df是False,这意味着他们不是同一个对象。如果它们不是同一个对象,则向其中一个添加列不应影响另一个。

但是[9]告诉我们添加一个列output_df肯定会添加相同的列X,这意味着它们实际上是同一个对象。

为什么这里有断线?

(pd.__version__ == 0.24.1和python --version = Python 3.7.1,如果它的事项)

解决办法:a DataFrame和它的底层数据之间存在一些分离,这些数据存储在其中BlockManager。在您的示例中,基础BlockManager数据是相同的,因此将其更改为一个DataFrame将影响另一个

11.0571
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子