亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據另一列的條件填充空值(pandas)

根據另一列的條件填充空值(pandas)

偶然的你 2024-01-04 17:18:27
我正在嘗試在數據集中填充空值。描述欄有公寓類型。對于工作室,我嘗試填寫為 0 間臥室,而對于房間,我嘗試填寫為 1 間臥室。我試過df.loc[df['Description'] == 'Studio', 'Bedrooms'] = df['Bedrooms'].fillna(0)df.loc[df['Description'] == 'Rooms', 'Bedrooms'] = df['Bedrooms'].fillna(1)但它不起作用。有沒有人有什么建議?
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

沒有示例 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)。


如果我沒有正確猜測您的問題,請告訴我。


祝你好運!


查看完整回答
反對 回復 2024-01-04
  • 1 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號