簡體   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