我是Python(和本网站)的新手,我目前正试图用他们的模式替换特定数据帧列中的NA值.我尝试了各种不起作用的方法.请帮我看看我做错了什么:
注意:我正在使用的所有列都是float64类型.我的所有代码都会运行,但是当我df[cols_mode].isnull().sum()在列中检查空值时,它仍保持不变.
方法1:
cols_mode = ['race', 'goal', 'date', 'go_out', 'career_c']
df[cols_mode].apply(lambda x: x.fillna(x.mode, inplace=True))
Run Code Online (Sandbox Code Playgroud)
我也尝试了Imputer方法,但遇到了相同的结果
方法2:
for column in df[['race', 'goal', 'date', 'go_out', 'career_c']]:
mode = df[column].mode()
df[column] = df[column].fillna(mode)
Run Code Online (Sandbox Code Playgroud)
方法3:
df['race'].fillna(df.race.mode(), inplace=True)
df['goal'].fillna(df.goal.mode(), inplace=True)
df['date'].fillna(df.date.mode(), inplace=True)
df['go_out'].fillna(df.go_out.mode(), inplace=True)
df['career_c'].fillna(df.career_c.mode(), inplace=True)
Run Code Online (Sandbox Code Playgroud)
方法4: 我的方法变得越来越像一个手动过程,最后这个方法有效:
df['race'].fillna(2.0, inplace=True)
df['goal'].fillna(1.0, inplace=True)
df['date'].fillna(6.0, inplace=True)
df['go_out'].fillna(2.0, inplace=True)
df['career_c'].fillna(2.0, inplace=True)
Run Code Online (Sandbox Code Playgroud)
Die*_*des 11
mode返回一个Series,因此在替换NaNDataFrame中的值之前,您仍然需要访问所需的行。
for column in ['race', 'goal', 'date', 'go_out', 'career_c']:
df[column].fillna(df[column].mode()[0], inplace=True)
Run Code Online (Sandbox Code Playgroud)
如果要将其应用于DataFrame的所有列,则:
for column in df.columns:
df[column].fillna(df[column].mode()[0], inplace=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10011 次 |
| 最近记录: |