【问题标题】:Fill null values based on condition for another column (pandas)根据另一列的条件填充空值(熊猫)
【发布时间】:2020-10-25 14:29:48
【问题描述】:

我正在尝试在我的数据集中填充空值。描述列具有公寓类型。对于 Studio,我尝试填写为 0 间卧室,而对于 Room,我尝试填写为 1 间卧室。

我试过了

df.loc[df['Description'] == 'Studio', 'Bedrooms'] = df['Bedrooms'].fillna(0)
df.loc[df['Description'] == 'Rooms', 'Bedrooms'] = df['Bedrooms'].fillna(1)

但它不起作用。有人有什么建议吗?

【问题讨论】:

  • 请提供您的 DataFrame 示例。

标签: python pandas null fillna


【解决方案1】:

没有示例 DataFrame,我不得不质疑您到底想要什么,希望我是对的。

你可以使用简单的 lambda 函数:

 # Import pandas, numpy
    import pandas as pd
    import numpy as np    

# Sample df
    d = {'Desc': ['Studio', 'Rooms', 'Studio', 'Studio', 'Studio', 'Rooms','Rooms','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 + for 循环并将新列添加到您的 df。

# Import pandas, numpy
import pandas as pd
import numpy as np

# Sample df
d = {'Desc': ['Studio', 'Rooms', 'Studio', 'Studio', 'Studio', 'Rooms','Rooms','Rooms','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)。

如果我没猜对你的问题,请告诉我。

祝你好运!

【讨论】:

    猜你喜欢
    • 2019-09-09
    • 2019-04-28
    • 2012-05-29
    • 2020-11-26
    • 2019-06-05
    • 2019-05-04
    • 2022-01-15
    • 2023-01-28
    相关资源
    最近更新 更多