如何基于loc条件将DataFrame中孤儿行的Parent Case #设为nan
问题描述
我们有如下示例数据集,其中部分子案例引用的父案例未出现在数据集中(这类案例称为孤儿案例),需要将这些孤儿案例的Parent Case #字段设为nan。
import pandas as pd import numpy as np sample_data = [ {'Case #': 'A25', 'Parent Case #': 'A24', 'Data': 'Blah blah'}, {'Case #': 'B46', 'Parent Case #': np.nan, 'Data': 'Waka waka'}, {'Case #': 'B89', 'Parent Case #': 'B46', 'Data': 'Moo moo'}, {'Case #': 'C12', 'Parent Case #': np.nan, 'Data': 'Meow'}, {'Case #': 'C44', 'Parent Case #': np.nan, 'Data': 'Woof'}, {'Case #': 'C77', 'Parent Case #': 'C12', 'Data': 'Hiss'}, {'Case #': 'D55', 'Parent Case #': 'D2', 'Data': 'Ribbet'} ] df = pd.DataFrame(sample_data)
你已经通过以下条件识别出孤儿案例行:
df.loc[~df["Parent Case #"].isna() & ~df["Parent Case #"].isin(df["Case #"].values)]
解决方案
直接在loc中同时指定筛选条件与目标字段,即可完成赋值操作:
# 定位孤儿案例行并将Parent Case #设为nan df.loc[~df["Parent Case #"].isna() & ~df["Parent Case #"].isin(df["Case #"].values), "Parent Case #"] = np.nan
验证结果
执行后查看数据集,A25和D55的Parent Case #已被成功设为nan:
print(df)
输出结果:
Case # Parent Case # Data 0 A25 NaN Blah blah 1 B46 NaN Waka waka 2 B89 B46 Moo moo 3 C12 NaN Meow 4 C44 NaN Woof 5 C77 C12 Hiss 6 D55 NaN Ribbet
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

