我试图写一个函数来填充Pandas Dataframe 中的缺失数据。函数的输入是一个 Dataframe ,其中包含缺失值和希望填充缺失值的列名,并且它将返回一个填充了缺失值的新 Dataframe 。问题是该函数还将填充输入 Dataframe 中的缺失值。这是我不打算做的。请看我的代码如下:
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer
table = pd.DataFrame({'feature1':[3,5,np.nan],'feature2':[4,1,np.nan],'feature3': [6,7,3]})
def missingValueHandle(dataframe,feature):
df = dataframe
df[feature] = df[feature].fillna(axis = 0, method = 'ffill')
imp = SimpleImputer(strategy = 'mean')
df = imp.fit_transform(df)
return df
new_dataframe = missingValueHandle(dataframe=table,feature = 'feature1')
new_dataframe
| | 功能1|功能2|特辑3|
| - ------|- ------|- ------|- ------|
| 无|3.0版|4.0版|六个|
| 1个|5.0版|1.0分|七|
| 第二章|5.0版|钠氮|三个|
table
| | 功能1|功能2|特辑3|
| - ------|- ------|- ------|- ------|
| 无|3.0版|4.0版|六个|
| 1个|5.0版|1.0分|七|
| 第二章|5.0版|钠氮|三个|
如您所见,我的输入“table”随着输出“new_dataframe”而改变,我需要做些什么来防止这种情况发生?
1条答案
按热度按时间qmb5sa221#
使用
assign
方法,而不是分配给传递的 Dataframe 。.assign
总是返回一个新的 Dataframe 。在这种情况下,也可以不使用lambda:
lambda方法的好处是,您可以在
assign
之前的管道中添加一个行过滤器,它仍然可以工作