所以我在Kaggle上处理一个名为netflix-movies-and-tv-shows的数据集。我目前正在执行一些数据清理任务,并希望找到dataframe中的null值。
假设我有一个看起来像这样的dataframe:
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)
现在我想用类似这样的内容替换“character”列中的null值:如果角色是“演员”,那么character = 'figurant'如果角色是“导演”,那么character = '导演'
我找到了一些解决方案:
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)
但这只适用于“演员”。那些“导演”的空值仍然为空。
我只是Python世界的初学者,如果这个问题听起来很基础,请原谅我。
谢谢你们!
1条答案
按热度按时间4dbbbstv1#
您可以使用Mapdict来填充缺少的值:
输出: