繁体   English   中英

如何使用 pandas dataframe 将列添加到 dataframe 根据另一个 df 中的匹配列将数据标记为 1 或 0

[英]How to use pandas dataframe to add a column to a dataframe that labels data as 1 or 0 based on matching columns in another df

我正在使用 Pandas 数据帧将机器学习算法的一些医疗保险数据集标记为欺诈或非欺诈。 标记涉及将 DMPOES 数据集中的 NPI 编号与 LEIE 数据集中的 NPI 编号匹配。 每个数据集都包含一个名为“NPI”的列。 我需要能够找出 DMEPOS dataframe 中的每一行在 LEIE 数据集中是否有匹配的 NPI。 接下来,我需要向 DMPOES 数据集添加一列(可能命名为“欺诈”,表示该行是否欺诈,使用 1 表示欺诈,使用 0 表示不欺诈。这是我编写的代码(它是'不多,但它应该给出我与 Pandas 一起使用的大致方向。

import pandas as pd
import numpy as np

#Read files into df
dmepos = pd.read_csv('dmpoes.csv')
leie = pd. =read_csv('leie.csv')

这是下载数据集的链接(每个数据集中的 NPI 列标记不同,所以我进去并更改了它,以便列名匹配,我建议也这样做)我还更改了文件的名称以使其更多易于编码:DMPOES: https://www.cms.gov/Research-Statistics-Data-and-Systems/Statistics-Trends-and-Reports/Medicare-Provider-Charge-Data/DME2018 LEIE: Z5E056C500A1C4B6A7110B5ADED807 oig.hhs.gov/exclusions/exclusions_list.asp

您可以使用合并。 如果您不重命名 cols,它实际上更清洁 IMO,因为您必须在合并后处理后缀。 合并后,您可以使用 np.where 根据存在的 NaN 值更新欺诈 col,其中两个合并 col 不匹配。 不完全确定这是您想要的欺诈专栏的逻辑,但如果不是,请发表评论,我会根据需要进行更新。

import pandas as pd
import numpy as np

#Read files into df
dmepos = pd.read_csv('dmpoes.csv')
leie = pd.read_csv('leie.csv')

df_m  = dmepos.merge(leie, left_on='REFERRING_NPI', right_on='NPI', how='left')

df_m['Fraudulent'] = np.where(df_m['NPI'].isnull(), 1, 0)

在这里,我们可以看到在连接列中没有匹配的行,因为它们包含 NaN 值。 在这里,我们可以看到在连接列中没有匹配的行,因为它们包含 NaN 值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM