从示例开始......
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将影响另一个
三个资料Q群下载不了也转发不了,先放这里Fine_tuning.zipLangChain.zipdata_clear.rar