簡體   English   中英

如何使用熊貓從CSV讀取數據時如何忽略具有相同索引的多個條目

[英]how to ignore multiple entries with same index while reading data from CSV using pandas

我有一個csv文件,看起來像這樣:

patient_id, age_in_years,   CENSUS_REGION,  URBAN_RURAL_STATUS, YEAR

11511,  7,  Northeast,  Urban,  2011

9882613,    73, South,  Urban,  2011

32190339,   49, West,   Urban,  2011

32190339,   49, West,   Urban,  2011

32190339,   49, West,   Urban,  2011

32190339,   49, West,   Urban,  2011

32190339,   49, West,   Urban,  2011

32190339,   49, West,   Urban,  2011
...

第一列(即Patient_id)是索引,您可以看到同一患者有多個條目。 當我使用pandas導入數據時,我希望我的代碼忽略這些多個條目,但是我不確定該怎么做。 目前,我正在使用以下代碼:

df = pd.read_csv(filename, index_col = 0)
df.drop_duplicates()

在代碼的進一步內容中,我有一個函數說:

def URSTATUS_to_numeric(a):
if a == 'Urban':
    return 0
if a == 'Rural':
    return 1
if a == 'NULL':
    return 2

當我調用此函數並使用df.drop_duplicates()打印它時,這是我得到的:

df['URSTATUS_num'] = df['URBAN_RURAL_STATUS'].apply(URSTATUS_to_numeric)

print(df.drop_duplicates(['URSTATUS_num']))

>>> patient_id  URSTATUS_num  
     11511            0  
     129126475        1  
     151269094        NaN  

因此,基本上,它URSTATUS_num列作為參考刪除重復項。 但是,我希望代碼在執行drop_duplicates()操作時始終引用patient_id 誰能幫忙嗎?

我不相信您在閱讀它們時可以忽略它們,但是一旦閱讀它們,就可以使用drop_duplicates輕松刪除它們。

df = pd.read_csv(filename, index_col = 0)
>>> df.drop_duplicates()
   patient_id  age_in_years CENSUS_REGION URBAN_RURAL_STATUS  YEAR
0       11511             7     Northeast              Urban  2011
1     9882613            73         South              Urban  2011
2    32190339            49          West              Urban  2011

編輯:

您可能只想調用一次,例如

df = pd.read_csv(filename, index_col = 0).drop_duplicates()

根據基礎數據的整潔度,您可能首先需要進行預處理以去除空格等。

您可以通過以下方式將drop_duplcates “就地”

df.drop_duplicates(inplace=True)

然后,相同的約定也適用於其他數據fill_na方法,例如sortfill_na等。 我想這是您個人喜好的問題,無論您使用此語法還是更“實用”的語法

df_dedup = df.drop_duplicates()

盡管默認行為( inplace=False )確實是我通常使用的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM