<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 假如没有df.fillna('n/a',inplace=True)这句，会报错。因为在type_of_property这个column中，有空值，即N/A
Step1:  带卧室但没厕所
Step2:  这里通过自定义函数来分类处理数据，从sucln['xxx']出来的是Series，parse_info中读入的row参数，是来自Series的一行文字
这里才是数据处理的精华
<ASSISTANT_TASK:>
Python Code:
df.fillna('n/a',inplace=True)
su=df[df['type_of_property'].str.contains('Apartment')]
mu=df[df['type_of_property'].str.contains('Apartments')]
print(len(mu))
print(len(su))
su['propertyinfo_value']
len(su[~(su['propertyinfo_value'].str.contains('bd') | su['propertyinfo_value'].str.contains('Studio'))])
Explanation: 假如没有df.fillna('n/a',inplace=True)这句，会报错。因为在type_of_property这个column中，有空值，即N/A
End of explanation
len(su[su['propertyinfo_value'].str.contains('bd') & ~su['propertyinfo_value'].str.contains('ba')])
no_baths=su[~su['propertyinfo_value'].str.contains('ba')]
sucln=su[~su.index.isin(no_baths.index)]
sucln
Explanation: 带卧室但没厕所
End of explanation
def parse_info(row):
    print(row)
    br,ba,sqft=row.split('·')[:3]
    #_,br=br.split('mo')[:2]
    rent,br=br.split('mo')[:2]
    return pd.Series({'Beds':br,'Baths':ba,'Sqft':sqft,'Rent':rent+'mo'})
attr=sucln['propertyinfo_value'].apply(parse_info)
attr
sujnd=sucln.join(attr)
sujnd.T
Explanation: 这里通过自定义函数来分类处理数据，从sucln['xxx']出来的是Series，parse_info中读入的row参数，是来自Series的一行文字
这里才是数据处理的精华
End of explanation
<END_TASK>