根据条件填充另一列熊猫的空值

问题描述

我正在尝试在数据集中填写空值。 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)。

如果我没有正确猜到您的问题,请告诉我。

祝你好运!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...