问题描述
我正在尝试在数据集中填写空值。 description列包含公寓的类型。对于Studio,我想填充为0个卧室,而对于“房间”,我试图填充为1个卧室。
我尝试过
df.loc[df['Description'] == 'Studio','bedrooms'] = df['bedrooms'].fillna(0)
df.loc[df['Description'] == 'Rooms','bedrooms'] = df['bedrooms'].fillna(1)
但不起作用。有人有建议吗?
解决方法
没有示例DataFrame,我不得不询问您到底想要什么,希望我是对的。
您可以使用简单的lambda函数:
# Import pandas,numpy
import pandas as pd
import numpy as np
# Sample df
d = {'Desc': ['Studio','Rooms','Studio','Rooms']}
df = pd.DataFrame(data=d)
df['Rooms'] = np.nan
# Lambda function
df['Rooms'] = df.apply(
lambda row: 0 if row['Desc'] == 'Studio' else 1,axis=1
)
或使用list +进行循环,然后将新列添加到df中。
# Import pandas,numpy
import pandas as pd
import numpy as np
# Sample df
d = {'Desc': ['Studio','Rooms']}
df = pd.DataFrame(data=d)
# Create empty list for bedroom numbers.
bedrooms = []
# Fill the list with 0/1 base on your Studio/Rooms option.
for i in range(0,len(df.index)):
if df['Desc'].loc[i].lower() == 'studio':
bedrooms.append(0)
else:
bedrooms.append(1)
# Add new column to your DataFrame
df['Rooms'] = np.array(bedrooms)
这两种方式都会在名为“房间”的新列中显示结果(0/1)。
如果我没有正确猜到您的问题,请告诉我。
祝你好运!