根据条件替换空值

问题描述 投票:0回答:1

所以我正在 Kaggle 上研究一个名为 netflix-movies-and-tv-shows 的数据集。我目前正在进行一些数据清理任务,想在数据框中找到空值。

假设我有一个如下所示的数据框:

import pandas as pd
import numpy as np

all_data = {
    "person_id": [7782, 28692],
    "id": ["tm82169", "tm17823"],
    "name": ["John G.Avildsen", "Randal Kleiser"],
    "character": [np.nan, np.nan],
    "role": ["DIRECTOR", "ACTOR"]
}
index_labels = [1,2]
df = pd.DataFrame(all_data,index=index_labels)
print(df)

现在我想用类似的东西替换“字符”列中的空值: 如果角色是“ACTOR”,那么 character = 'figurant' 如果 role 是“DIRECTOR”,那么 character = 'director'

我找到了一些解决方案:

mask = (all_data['role'] == 'ACTOR')
all_data.loc[all_data['character'].isnull() & mask, 'character'] = 'figurant'
all_data.head(250)

或:

all_data['character'] = all_data['character'].fillna('figurant').where(all_data['role'] == "ACTOR")
all_data.head(250)

但是,我努力让代码适用于这两种情况。

我还尝试了带有 if-else 条件的 for 循环:

for i in all_data['role']:
    if i == "ACTOR":
        all_data['character'].fillna('figurant')
    elif i == "DIRECTOR":
        all_data['character'].fillna('director') 
all_data.head(50)

但这只适用于“ACTOR”。那些是“DIRECTOR”的人的空值仍然是空的。

我只是 python 世界的初学者,如果问题听起来很基础,请原谅我。

谢谢你们!

python pandas dataframe null
1个回答
1
投票

您可以使用映射字典来填充缺失值:

dmap = {'DIRECTOR': 'director', 'ACTOR': 'figurant'}
df['character'] = df['character'].fillna(df['role'].map(dmap))

输出:

>>> df
   person_id       id             name character      role
1       7782  tm82169  John G.Avildsen  director  DIRECTOR
2      28692  tm17823   Randal Kleiser  figurant     ACTOR
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.