所以我正在 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 世界的初学者,如果问题听起来很基础,请原谅我。
谢谢你们!
您可以使用映射字典来填充缺失值:
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