以下是我的数据框示例:
import pandas as pd
import numpy as np
d=['SKODASUPERB','SKODASUPERB',\
'SKODASUPERB','MERCEDES-BENZE CLASS','ASTON MARTINVIRAGE'\
,'ASTON MARTINVIRAGE','ASTON MARTINVIRAGE','TOYOTAHIACE',\
'TOYOTAAVENSIS','TOYOTAAVENSIS','TOYOTAAVENSIS','TOYOTAAVENSIS',\
'FERRARI360','FERRARILAFERRARI']
x=['SUV','SUV','nan','nan','SPORTS','SPORTS','SPORTS',\
'nan','SEDAN','SEDAN','SEDAN','SEDAN','SPORT','SPORT']
df=pd.DataFrame({'make_model':d,'body':x})
df.body=df.body.replace('nan',np.NaN)
df.head()
Out[24]:
make_model body
0 SKODASUPERB SUV
1 SKODASUPERB SUV
2 SKODASUPERB NaN
3 MERCEDES-BENZE CLASS NaN
4 ASTON MARTINVIRAGE SPORTS
“body”列中有一些空值
df.body.isnull().sum()
Out[25]: 3
因此,我尝试通过使用特定make_model的body类型模式来填充body列中的空值。例如,SKODASUPERB的2个观察结果的body为“SUV”,1个观察结果的body为空。因此,SKODASUPERB的body模式将为“SUV”,我希望第三个观察结果也填充“SUV”。为此,我使用以下代码
make_model_list=df.make_model.unique().tolist()
for x in make_model_list:
df.loc[(df['make_model']==x)&(df['body'].isnull()),'body']=\
df.loc[(df['make_model']==x)&(df['body'].isnull()),'body']\
.fillna(df.loc[df['make_model']==x,'body'].mode())
不幸的是,由于某些观察没有模式值,循环中断
df.body.isnull().sum()
Out[30]: 3
我怎么能强迫循环运行,即使没有模式'身体'的值为一个特定的make_model。我知道我可以使用继续命令,但我不知道如何写它。
1条答案
按热度按时间zrfyljdw1#
假设make_model和body是不同的值: